version 1.94, 2005/05/20 19:53:10
|
version 1.95, 2005/09/28 14:49:33
|
|
|
# if defined(FD_SETSIZE) && FD_SETSIZE != 1024 | # if defined(FD_SETSIZE) && FD_SETSIZE != 1024 |
# error "FD_SETSIZE was not set to 1024 prior to the last inclusion \ | # error "FD_SETSIZE was not set to 1024 prior to the last inclusion \ |
of <winsock.h>. It may have been indirectly included (e.g., by including \ | of <winsock.h>. It may have been indirectly included (e.g., by including \ |
<windows.h>). Finthe inclusion of that header which is visible to this \ |
<windows.h>). Find inclusion of that header which is visible to this \ |
compilation unit and #define FD_SETZIE to 1024 prior to that inclusion; \ | compilation unit and #define FD_SETZIE to 1024 prior to that inclusion; \ |
otherwise, less than 64 clients (the default) will be able to connect to the \ | otherwise, less than 64 clients (the default) will be able to connect to the \ |
CIMOM. PLEASE DO NOT SUPPRESS THIS WARNING; PLEASE FIX THE PROBLEM." | CIMOM. PLEASE DO NOT SUPPRESS THIS WARNING; PLEASE FIX THE PROBLEM." |
|
|
/* setup the tickle server/listener */ | /* setup the tickle server/listener */ |
| |
// get a socket for the server side | // get a socket for the server side |
if((_tickle_server_socket = ::socket(PF_INET, SOCK_STREAM, 0)) < 0){ |
if((_tickle_server_socket = ::socket(PF_INET, SOCK_STREAM, 0)) == PEGASUS_INVALID_SOCKET){ |
//handle error | //handle error |
MessageLoaderParms parms("Common.Monitor.TICKLE_CREATE", | MessageLoaderParms parms("Common.Monitor.TICKLE_CREATE", |
"Received error number $0 while creating the internal socket.", | "Received error number $0 while creating the internal socket.", |
|
|
/* set up the tickle client/connector */ | /* set up the tickle client/connector */ |
| |
// get a socket for our tickle client | // get a socket for our tickle client |
if((_tickle_client_socket = ::socket(PF_INET, SOCK_STREAM, 0)) < 0){ |
if((_tickle_client_socket = ::socket(PF_INET, SOCK_STREAM, 0)) == PEGASUS_INVALID_SOCKET){ |
// handle error | // handle error |
MessageLoaderParms parms("Common.Monitor.TICKLE_CLIENT_CREATE", | MessageLoaderParms parms("Common.Monitor.TICKLE_CLIENT_CREATE", |
"Received error number $0 while creating the internal client socket.", | "Received error number $0 while creating the internal client socket.", |
|
|
place to calculate the max file descriptor (maximum socket number) | place to calculate the max file descriptor (maximum socket number) |
because we have to traverse the entire array. | because we have to traverse the entire array. |
*/ | */ |
int maxSocketCurrentPass = 0; |
PEGASUS_SOCKET maxSocketCurrentPass = 0; |
for( int indx = 0; indx < (int)_entries.size(); indx++) | for( int indx = 0; indx < (int)_entries.size(); indx++) |
{ | { |
if(maxSocketCurrentPass < _entries[indx].socket) | if(maxSocketCurrentPass < _entries[indx].socket) |
|
|
maxSocketCurrentPass++; | maxSocketCurrentPass++; |
| |
autoEntryMutex.unlock(); | autoEntryMutex.unlock(); |
|
|
|
// |
|
// The first argument to select() is ignored on Windows and it is not |
|
// a socket value. The original code assumed that the number of sockets |
|
// and a socket value have the same type. On Windows they do not. |
|
// |
|
#ifdef PEGASUS_OS_TYPE_WINDOWS |
|
int events = select(0, &fdread, NULL, NULL, &tv); |
|
#else |
int events = select(maxSocketCurrentPass, &fdread, NULL, NULL, &tv); | int events = select(maxSocketCurrentPass, &fdread, NULL, NULL, &tv); |
|
#endif |
autoEntryMutex.lock(); | autoEntryMutex.lock(); |
| |
#ifdef PEGASUS_OS_TYPE_WINDOWS | #ifdef PEGASUS_OS_TYPE_WINDOWS |
|
|
| |
| |
int Monitor::solicitSocketMessages( | int Monitor::solicitSocketMessages( |
Sint32 socket, |
PEGASUS_SOCKET socket, |
Uint32 events, | Uint32 events, |
Uint32 queueId, | Uint32 queueId, |
int type) | int type) |
|
|
| |
} | } |
| |
void Monitor::unsolicitSocketMessages(Sint32 socket) |
void Monitor::unsolicitSocketMessages(PEGASUS_SOCKET socket) |
{ | { |
| |
PEG_METHOD_ENTER(TRC_HTTP, "Monitor::unsolicitSocketMessages"); | PEG_METHOD_ENTER(TRC_HTTP, "Monitor::unsolicitSocketMessages"); |
|
|
if(_entries[index].socket == socket) | if(_entries[index].socket == socket) |
{ | { |
_entries[index]._status = _MonitorEntry::EMPTY; | _entries[index]._status = _MonitorEntry::EMPTY; |
_entries[index].socket = -1; |
_entries[index].socket = PEGASUS_INVALID_SOCKET; |
_solicitSocketCount--; | _solicitSocketCount--; |
break; | break; |
} | } |