version 1.20, 2002/06/01 00:56:32
|
version 1.22, 2002/06/20 22:05:18
|
|
|
HTTPAcceptor::HTTPAcceptor(Monitor* monitor, MessageQueue* outputMessageQueue) | HTTPAcceptor::HTTPAcceptor(Monitor* monitor, MessageQueue* outputMessageQueue) |
: Base(PEGASUS_QUEUENAME_HTTPACCEPTOR), | : Base(PEGASUS_QUEUENAME_HTTPACCEPTOR), |
_monitor(monitor), _outputMessageQueue(outputMessageQueue), | _monitor(monitor), _outputMessageQueue(outputMessageQueue), |
_rep(0), _sslcontext(NULL) |
_rep(0), _sslcontext(NULL), _entry_index(-1) |
{ | { |
| |
Socket::initializeInterface(); | Socket::initializeInterface(); |
|
|
: Base(PEGASUS_QUEUENAME_HTTPACCEPTOR), | : Base(PEGASUS_QUEUENAME_HTTPACCEPTOR), |
_monitor(monitor), _outputMessageQueue(outputMessageQueue), | _monitor(monitor), _outputMessageQueue(outputMessageQueue), |
_rep(0), | _rep(0), |
_sslcontext(sslcontext) |
_sslcontext(sslcontext), |
|
_entry_index(-1) |
{ | { |
Socket::initializeInterface(); | Socket::initializeInterface(); |
} | } |
|
|
{ | { |
_monitor->unsolicitSocketMessages(socket); | _monitor->unsolicitSocketMessages(socket); |
_rep->connections.remove(i); | _rep->connections.remove(i); |
while (connection->refcount.value()) { } |
|
delete connection; | delete connection; |
break; | break; |
} | } |
|
|
| |
// Register to receive SocketMessages on this socket: | // Register to receive SocketMessages on this socket: |
| |
if (!_monitor->solicitSocketMessages( |
if ( -1 == ( _entry_index = _monitor->solicitSocketMessages( |
_rep->socket, | _rep->socket, |
SocketMessage::READ | SocketMessage::EXCEPTION, | SocketMessage::READ | SocketMessage::EXCEPTION, |
getQueueId(), | getQueueId(), |
Monitor::ACCEPTOR)) |
Monitor::ACCEPTOR))) |
{ | { |
Socket::close(_rep->socket); | Socket::close(_rep->socket); |
delete _rep; | delete _rep; |
|
|
_monitor, mp_socket, this, static_cast<MessageQueue *>(_outputMessageQueue)); | _monitor, mp_socket, this, static_cast<MessageQueue *>(_outputMessageQueue)); |
| |
// Solicit events on this new connection's socket: | // Solicit events on this new connection's socket: |
|
int index; |
| |
if (!_monitor->solicitSocketMessages( |
if (-1 == (index = _monitor->solicitSocketMessages( |
socket, | socket, |
SocketMessage::READ | SocketMessage::EXCEPTION, | SocketMessage::READ | SocketMessage::EXCEPTION, |
connection->getQueueId(), Monitor::CONNECTION)) |
connection->getQueueId(), Monitor::CONNECTION)) ) |
{ | { |
delete connection; | delete connection; |
Socket::close(socket); | Socket::close(socket); |
} | } |
| |
// Save the socket for cleanup later: | // Save the socket for cleanup later: |
|
connection->_entry_index = index; |
| |
_rep->connections.append(connection); | _rep->connections.append(connection); |
} | } |