blob: 48a1521293810ef35e2da815a03812f1a535cea2 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
|
/*
* Implementation of do_select() for winnet.c to use, that uses
* WSAAsyncSelect to convert network activity into window messages,
* for integration into a GUI event loop.
*/
#include "putty.h"
static HWND winsel_hwnd = NULL;
void winselgui_set_hwnd(HWND hwnd)
{
winsel_hwnd = hwnd;
}
void winselgui_clear_hwnd(void)
{
winsel_hwnd = NULL;
}
const char *do_select(SOCKET skt, bool enable)
{
int msg, events;
if (enable) {
msg = WM_NETEVENT;
events = (FD_CONNECT | FD_READ | FD_WRITE |
FD_OOB | FD_CLOSE | FD_ACCEPT);
} else {
msg = events = 0;
}
assert(winsel_hwnd);
if (p_WSAAsyncSelect(skt, winsel_hwnd, msg, events) == SOCKET_ERROR)
return winsock_error_string(p_WSAGetLastError());
return NULL;
}
|