source: trunk/src/wsock32/asyncthread.h@ 3551

Last change on this file since 3551 was 3548, checked in by sandervl, 25 years ago

async select clear fix

File size: 1.9 KB
Line 
1/* $Id: asyncthread.h,v 1.4 2000-05-18 09:09:04 sandervl Exp $ */
2
3/*
4 * Async thread help functions
5 *
6 * Copyright 2000 Sander van Leeuwen (sandervl@xs4all.nl)
7 *
8 * Project Odin Software License can be found in LICENSE.TXT
9 */
10#ifndef __ASYNCTHREAD_H__
11#define __ASYNCTHREAD_H__
12
13#include <vmutex.h>
14#include <vsemaphore.h>
15
16#define ASYNCCNV _Optlink
17
18typedef void (* ASYNCCNV ASYNCTHREADPROC)(void *);
19
20enum AsyncRequestType {
21 ASYNC_GETHOSTBYNAME,
22 ASYNC_GETHOSTBYADDR,
23 ASYNC_GETPROTOBYNAME,
24 ASYNC_GETPROTOBYNUMBER,
25 ASYNC_GETSERVBYNAME,
26 ASYNC_GETSERVBYPORT,
27 ASYNC_SELECT
28} ;
29
30typedef struct _ASYNCTHREADPARM
31{
32 BOOL fActive;
33 BOOL fCancelled;
34 BOOL fConnected;
35 BOOL fRemoved; //async select
36 AsyncRequestType request;
37 LHANDLE hAsyncTaskHandle;
38 HANDLE hThread; //handle of thread that started the async request
39 ASYNCTHREADPROC asyncProc;
40 VMutex *parmmutex;
41 HWND hwnd;
42 DWORD msg;
43 LPSTR buf;
44 DWORD buflen;
45 union {
46 struct {
47 LPSTR name;
48 } gethostbyname;
49 struct {
50 LPSTR addr;
51 int len;
52 int type;
53 } gethostbyaddr;
54 struct {
55 LPSTR name;
56 } getprotobyname;
57 struct {
58 int number;
59 } getprotobynumber;
60 struct {
61 LPSTR name;
62 LPSTR proto;
63 } getservbyname;
64 struct {
65 int port;
66 LPSTR proto;
67 } getservbyport;
68 struct {
69 VSemaphore *asyncSem;
70 DWORD lEvents;
71 DWORD lEventsPending;
72 SOCKET s;
73 } asyncselect;
74 } u;
75 _ASYNCTHREADPARM *next;
76} ASYNCTHREADPARM, *PASYNCTHREADPARM;
77
78ULONG QueueAsyncJob(ASYNCTHREADPROC asyncproc, PASYNCTHREADPARM pThreadParm, BOOL fSetBlocking = FALSE);
79void RemoveFromQueue(PASYNCTHREADPARM pThreadParm);
80
81void EnableAsyncEvent(SOCKET s, ULONG flags);
82BOOL QueryAsyncEvent(SOCKET s, HWND *pHwnd, int *pMsg, ULONG *plEvent);
83BOOL FindAndSetAsyncEvent(SOCKET s, HWND hwnd, int msg, ULONG lEvent);
84
85#endif //__ASYNCTHREAD_H__
Note: See TracBrowser for help on using the repository browser.