Changeset 6201 for trunk/src


Ignore:
Timestamp:
Jul 7, 2001, 4:29:41 PM (24 years ago)
Author:
achimha
Message:

implemented WSAEventSelect

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 $ */
    22/*
    33 * based on Windows Sockets 1.1 specs
     
    8787   return ( socket (af, type, protocol) );
    8888}
    89 
    90 /***********************************************************************
    91  *              WSAEnumNetworkEvents
    92  */
    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 $
    22
    33;Created by BLAST for IBM's compiler
     
    4747  socket                                           = WSOCK32.23
    4848  WSAEventSelect                                   = WSOCK32.3001
     49  WSAEnumNetworkEvents                             = WSOCK32.3002
    4950         
    5051EXPORTS
     
    8687; WSAEnumNameSpaceProvidersA                       @34
    8788; WSAEnumNameSpaceProvidersW                       @35
    88   WSAEnumNetworkEvents = _WSAEnumNetworkEvents@12  @36
     89  WSAEnumNetworkEvents                             @36
    8990; WSAEnumProtocolsA                                @37
    9091; WSAEnumProtocolsW                                @38
  • trunk/src/wsock32/asyncapi.cpp

    r6196 r6201  
    1 /* $Id: asyncapi.cpp,v 1.10 2001-07-07 10:44:08 achimha Exp $ */
     1/* $Id: asyncapi.cpp,v 1.11 2001-07-07 14:29:40 achimha Exp $ */
    22
    33/*
     
    731731//******************************************************************************
    732732//******************************************************************************
     733int 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.10 2001-07-07 10:44:09 achimha Exp $ */
     1/* $Id: asyncthread.cpp,v 1.11 2001-07-07 14:29:40 achimha Exp $ */
    22
    33/*
     
    2424
    2525static PASYNCTHREADPARM threadList = NULL;
    26 static VMutex          asyncThreadMutex;
     26VMutex asyncThreadMutex;
    2727
    2828static void AddToQueue(PASYNCTHREADPARM pThreadParm);
     
    193193//Assumes caller owns async thread mutex!
    194194//******************************************************************************
    195 static PASYNCTHREADPARM FindAsyncEvent(SOCKET s)
     195PASYNCTHREADPARM FindAsyncEvent(SOCKET s)
    196196{
    197197 PASYNCTHREADPARM pThreadInfo;
  • trunk/src/wsock32/asyncthread.h

    r6196 r6201  
    1 /* $Id: asyncthread.h,v 1.6 2001-07-07 10:44:09 achimha Exp $ */
     1/* $Id: asyncthread.h,v 1.7 2001-07-07 14:29:40 achimha Exp $ */
    22
    33/*
     
    7878} ASYNCTHREADPARM, *PASYNCTHREADPARM;
    7979
     80extern VMutex asyncThreadMutex;
     81PASYNCTHREADPARM FindAsyncEvent(SOCKET s);
     82
    8083ULONG QueueAsyncJob(ASYNCTHREADPROC asyncproc, PASYNCTHREADPARM pThreadParm, BOOL fSetBlocking = FALSE);
    8184void  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 $ */
    22
    33/*
     
    2424int WINAPI WSAEventSelect(SOCKET s, WSAEVENT hEvent, LONG lEvent)
    2525{
    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);
    2727
    2828    // forward call to worker function in HEVENT notification mode
    2929    return WSAAsyncSelectWorker(s, WSA_SELECT_HEVENT, (int)hEvent, 0, lEvent);
    3030}
     31
     32/***********************************************************************
     33 *              WSAEnumNetworkEvents
     34 */
     35int 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.22 2001-07-07 10:44:11 achimha Exp $
     1; $Id: wsock32.def,v 1.23 2001-07-07 14:29:41 achimha Exp $
    22
    33;Created by BLAST for IBM's compiler
     
    115115; functions for ws2_32 implemented here
    116116   WSAEventSelect              = _WSAEventSelect@12                       @3001
     117   WSAEnumNetworkEvents        = _WSAEnumNetworkEvents@12                 @3002
  • trunk/src/wsock32/wsock32.h

    r6196 r6201  
    1 /* $Id: wsock32.h,v 1.17 2001-07-07 10:44:11 achimha Exp $ */
     1/* $Id: wsock32.h,v 1.18 2001-07-07 14:29:41 achimha Exp $ */
    22
    33/* WSOCK32.H--definitions & conversions for Odin's wsock32.dll.
     
    5252// WSAAsyncSelect flags
    5353// also apply to Winsock 2.0 WSAEventSelect
     54#define FD_MAX_EVENTS               10
    5455#define FD_READ                     0x01
    5556#define FD_WRITE                    0x02
     
    249250int WSAAsyncSelectWorker(SOCKET s, int mode, int notifyHandle, int notifyData, long lEventMask);
    250251
     252typedef struct _WSANETWORKEVENTS
     253{
     254  long lNetworkEvents;
     255  int iErrorCode[FD_MAX_EVENTS];
     256} WSANETWORKEVENTS, *LPWSANETWORKEVENTS;
     257int WSAEnumNetworkEventsWorker(SOCKET s, WSAEVENT hEvent, LPWSANETWORKEVENTS lpEvent);
     258
    251259#endif  /* _WINSOCK32CONST_ */
    252260
Note: See TracChangeset for help on using the changeset viewer.