ntel Corporation PRoprietary Information Copyright (c) 1995 Intel Corporation
This listing is supplied under the terms of a license agreement with Intel Corporation and may not be used, copied, nor disclosed except in accordance with the terms of that agreeement.
Module Name:
select.c
Abstract:
This module contains the “select“ entry points from the winsock API. The following functions aare contained in this module.
22-Aug-1995 dirk@mink.intel.com Cleanup after code review. Moved includes to precomp.h
16-Aug-1995 dirk@mink.intel.com Added implementation of __WSAFDIsSet
--*/ #include “precomp.h“
int WSAAPI select ( IN int nfds, IN OUT fd_set FAR *readfds, IN OUT fd_set FAR *writefds, IN OUT fd_set FAR *exceptfds, IN const strUCt timeval FAR *timeout ) /*++ Routine Description:
Determine the status of one or more sockets, waiting if necessary.
Arguments:
nfds - This argument is ignored and included only for the sake of compatibility.
readfds - An optional pointer to a set of sockets to be checked for readability.
writefds - An optional pointer to a set of sockets to be checked for writability.
exceptfds - An optional pointer to a set of sockets to be checked for errors.
timeout - The maximum time for select() to wait, or NULL for blocking Operation.
Returns: select() returns the total number of descriptors which are ready and contained in the fd_set structures, 0 if the time limit eXPired, or SOCKET_ERROR if an error occurred. If the return value is SOCKET_ERROR, The error code is stored with SetLastError(). --*/ { INT ReturnValue; INT ErrorCode; PDPROVIDER Provider; PDSOCKET Socket; SOCKET SocketID; BOOL FoundSocket=FALSE;
ErrorCode = TURBO_PROLOG();
if (ErrorCode == ERROR_SUCCESS) {
__try { // Look for a socket in the three fd_sets handed in. The first // socket found will be used to select the service provider to // service this call if (readfds && readfds->fd_count) { SocketID = readfds->fd_array[0]; FoundSocket = TRUE; } //if
int WSAAPI WSAEventSelect( IN SOCKET s, IN WSAEVENT hEventObject, IN long lNetworkEvents ) /*++ Routine Description:
Specify an event object to be associated with the supplied set of FD_XXX network events.
Arguments:
s - A descriptor identifying the socket.
hEventObject - A handle identifying the event object to be associated with the supplied set of FD_XXX network events.
lNetworkEvents - A bitmask which specifies the combination of FD_XXX network events in which the application has interest.
Returns: Zero on success else SOCKET_Error. The error code is stored with SetLastError(). --*/ { INT ReturnValue; INT ErrorCode; PDPROVIDER Provider; PDSOCKET Socket;
int WSAAPI WSAAsyncSelect( IN SOCKET s, IN HWND hWnd, IN u_int wMsg, IN long lEvent ) /*++ Routine Description:
Request event notification for a socket.
Arguments:
s - A descriptor identifying the socket for which event notification is required.
hWnd - A handle identifying the window which should receive a message when a network event occurs.
wMsg - The message to be received when a network event occurs.
lEvent - A bitmask which specifies a combination of network events in which the application is interested.
Returns: The return value is 0 if the application‘s declaration of interest in the network event set was successful. Otherwise the value SOCKET_ERROR is returned, and a specific error number may be retrieved by calling WSAGetLastError(). --*/ { INT ReturnValue; INT ErrorCode; PDPROVIDER Provider; PDSOCKET Socket;