- Timestamp:
- Jul 7, 2001, 4:29:41 PM (24 years ago)
- Location:
- trunk/src
- Files:
-
- 8 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/ws2_32/socket.cpp
r6200 r6201 1 /* $Id */1 /* $Id: socket.cpp,v 1.9 2001-07-07 14:29:22 achimha Exp $ */ 2 2 /* 3 3 * based on Windows Sockets 1.1 specs … … 87 87 return ( socket (af, type, protocol) ); 88 88 } 89 90 /***********************************************************************91 * WSAEnumNetworkEvents92 */93 int WINAPI WSAEnumNetworkEvents(SOCKET s, WSAEVENT hEvent, LPWSANETWORKEVENTS lpEvent)94 {95 dprintf(("WSAEnumNetworkEvents %x %x %x NOT IMPLEMENTED", s, hEvent, lpEvent));96 SetLastError(WSAEINVAL);97 return SOCKET_ERROR;98 }99 -
trunk/src/ws2_32/ws2_32.def
r6195 r6201 1 ; $Id: ws2_32.def,v 1. 6 2001-07-07 10:43:42 achimha Exp $1 ; $Id: ws2_32.def,v 1.7 2001-07-07 14:29:22 achimha Exp $ 2 2 3 3 ;Created by BLAST for IBM's compiler … … 47 47 socket = WSOCK32.23 48 48 WSAEventSelect = WSOCK32.3001 49 WSAEnumNetworkEvents = WSOCK32.3002 49 50 50 51 EXPORTS … … 86 87 ; WSAEnumNameSpaceProvidersA @34 87 88 ; WSAEnumNameSpaceProvidersW @35 88 WSAEnumNetworkEvents = _WSAEnumNetworkEvents@12@3689 WSAEnumNetworkEvents @36 89 90 ; WSAEnumProtocolsA @37 90 91 ; WSAEnumProtocolsW @38 -
trunk/src/wsock32/asyncapi.cpp
r6196 r6201 1 /* $Id: asyncapi.cpp,v 1.1 0 2001-07-07 10:44:08achimha Exp $ */1 /* $Id: asyncapi.cpp,v 1.11 2001-07-07 14:29:40 achimha Exp $ */ 2 2 3 3 /* … … 731 731 //****************************************************************************** 732 732 //****************************************************************************** 733 int WSAEnumNetworkEventsWorker(SOCKET s, WSAEVENT hEvent, LPWSANETWORKEVENTS lpEvent) 734 { 735 PASYNCTHREADPARM pThreadInfo; 736 737 asyncThreadMutex.enter(); 738 pThreadInfo = FindAsyncEvent(s); 739 if (pThreadInfo) 740 { 741 // TODO return correct errors!!! 742 for (int i = 0; i < FD_MAX_EVENTS; i++) 743 { 744 lpEvent->iErrorCode[i] = 0; 745 } 746 747 lpEvent->lNetworkEvents = pThreadInfo->u.asyncselect.lEventsPending; 748 749 // TODO is this correct? API says they're cleared 750 pThreadInfo->u.asyncselect.lEventsPending = 0; 751 } 752 asyncThreadMutex.leave(); 753 if (!pThreadInfo) 754 { 755 dprintf(("no async registration for socket %x", s)); 756 // TODO: correct behavior? 757 WSASetLastError(WSAEINVAL); 758 return SOCKET_ERROR; 759 } 760 761 // post semaphore if present 762 if (hEvent) 763 { 764 // dprintf(("posting event semaphore 0x%x", hEvent)); 765 SetEvent(hEvent); 766 } 767 768 WSASetLastError(NO_ERROR); 769 return NO_ERROR; 770 } 771 //****************************************************************************** 772 //****************************************************************************** -
trunk/src/wsock32/asyncthread.cpp
r6196 r6201 1 /* $Id: asyncthread.cpp,v 1.1 0 2001-07-07 10:44:09achimha Exp $ */1 /* $Id: asyncthread.cpp,v 1.11 2001-07-07 14:29:40 achimha Exp $ */ 2 2 3 3 /* … … 24 24 25 25 static PASYNCTHREADPARM threadList = NULL; 26 static VMutexasyncThreadMutex;26 VMutex asyncThreadMutex; 27 27 28 28 static void AddToQueue(PASYNCTHREADPARM pThreadParm); … … 193 193 //Assumes caller owns async thread mutex! 194 194 //****************************************************************************** 195 staticPASYNCTHREADPARM FindAsyncEvent(SOCKET s)195 PASYNCTHREADPARM FindAsyncEvent(SOCKET s) 196 196 { 197 197 PASYNCTHREADPARM pThreadInfo; -
trunk/src/wsock32/asyncthread.h
r6196 r6201 1 /* $Id: asyncthread.h,v 1. 6 2001-07-07 10:44:09achimha Exp $ */1 /* $Id: asyncthread.h,v 1.7 2001-07-07 14:29:40 achimha Exp $ */ 2 2 3 3 /* … … 78 78 } ASYNCTHREADPARM, *PASYNCTHREADPARM; 79 79 80 extern VMutex asyncThreadMutex; 81 PASYNCTHREADPARM FindAsyncEvent(SOCKET s); 82 80 83 ULONG QueueAsyncJob(ASYNCTHREADPROC asyncproc, PASYNCTHREADPARM pThreadParm, BOOL fSetBlocking = FALSE); 81 84 void RemoveFromQueue(PASYNCTHREADPARM pThreadParm); -
trunk/src/wsock32/wsock2.cpp
r6196 r6201 1 /* $Id: wsock2.cpp,v 1. 1 2001-07-07 10:44:10 achimha Exp $ */1 /* $Id: wsock2.cpp,v 1.2 2001-07-07 14:29:40 achimha Exp $ */ 2 2 3 3 /* … … 24 24 int WINAPI WSAEventSelect(SOCKET s, WSAEVENT hEvent, LONG lEvent) 25 25 { 26 TRACE("WS2_32: WSAEventSelect socket %08x, hEvent %08x, event %08x", s, hEvent, (unsigned)lEvent);26 TRACE("WS2_32: WSAEventSelect socket 0x%x, hEvent 0x%x, event 0x%x", s, hEvent, (unsigned)lEvent); 27 27 28 28 // forward call to worker function in HEVENT notification mode 29 29 return WSAAsyncSelectWorker(s, WSA_SELECT_HEVENT, (int)hEvent, 0, lEvent); 30 30 } 31 32 /*********************************************************************** 33 * WSAEnumNetworkEvents 34 */ 35 int WINAPI WSAEnumNetworkEvents(SOCKET s, WSAEVENT hEvent, LPWSANETWORKEVENTS lpEvent) 36 { 37 // called too often in some apps, makes log file grow too fast 38 // dprintf(("WSAEnumNetworkEvents 0x%x 0x%x 0x%x NOT CORRECTLY IMPLEMENTED", s, hEvent, lpEvent)); 39 40 if(!fWSAInitialized) 41 { 42 dprintf(("WSA sockets not initialized")); 43 WSASetLastError(WSANOTINITIALISED); 44 return SOCKET_ERROR; 45 } 46 else 47 if(WSAIsBlocking()) 48 { 49 dprintf(("blocking call in progress")); 50 WSASetLastError(WSAEINPROGRESS); // blocking call in progress 51 return SOCKET_ERROR; 52 } 53 else 54 if (!lpEvent) 55 { 56 dprintf(("network event buffer NULL")); 57 WSASetLastError(WSAEINVAL); 58 return SOCKET_ERROR; 59 } 60 // TODO: check if lpEvent is in user address space! (Win32 does) 61 62 // forward call to worker routine 63 return WSAEnumNetworkEventsWorker(s, hEvent, lpEvent); 64 } -
trunk/src/wsock32/wsock32.def
r6196 r6201 1 ; $Id: wsock32.def,v 1.2 2 2001-07-07 10:44:11 achimha Exp $1 ; $Id: wsock32.def,v 1.23 2001-07-07 14:29:41 achimha Exp $ 2 2 3 3 ;Created by BLAST for IBM's compiler … … 115 115 ; functions for ws2_32 implemented here 116 116 WSAEventSelect = _WSAEventSelect@12 @3001 117 WSAEnumNetworkEvents = _WSAEnumNetworkEvents@12 @3002 -
trunk/src/wsock32/wsock32.h
r6196 r6201 1 /* $Id: wsock32.h,v 1.1 7 2001-07-07 10:44:11 achimha Exp $ */1 /* $Id: wsock32.h,v 1.18 2001-07-07 14:29:41 achimha Exp $ */ 2 2 3 3 /* WSOCK32.H--definitions & conversions for Odin's wsock32.dll. … … 52 52 // WSAAsyncSelect flags 53 53 // also apply to Winsock 2.0 WSAEventSelect 54 #define FD_MAX_EVENTS 10 54 55 #define FD_READ 0x01 55 56 #define FD_WRITE 0x02 … … 249 250 int WSAAsyncSelectWorker(SOCKET s, int mode, int notifyHandle, int notifyData, long lEventMask); 250 251 252 typedef struct _WSANETWORKEVENTS 253 { 254 long lNetworkEvents; 255 int iErrorCode[FD_MAX_EVENTS]; 256 } WSANETWORKEVENTS, *LPWSANETWORKEVENTS; 257 int WSAEnumNetworkEventsWorker(SOCKET s, WSAEVENT hEvent, LPWSANETWORKEVENTS lpEvent); 258 251 259 #endif /* _WINSOCK32CONST_ */ 252 260
Note:
See TracChangeset
for help on using the changeset viewer.