void SocketMonitor::processWriteSet( Strategy& strategy, fd_set& writeSet ) { #ifdef _MSC_VER for ( unsigned i = 0; i < writeSet.fd_count; ++i ) { int s = writeSet.fd_array[ i ]; if( m_connectSockets.find(s) != m_connectSockets.end() ) { m_connectSockets.erase( s ); m_readSockets.insert( s ); strategy.onConnect( *this, s ); } else { strategy.onWrite( *this, s ); } } #else Sockets::iterator i; Sockets sockets = m_connectSockets; for( i = sockets.begin(); i != sockets.end(); ++i ) { int s = *i; if ( !FD_ISSET( *i, &writeSet ) ) continue; m_connectSockets.erase( s ); m_readSockets.insert( s ); strategy.onConnect( *this, s ); } sockets = m_writeSockets; for( i = sockets.begin(); i != sockets.end(); ++i ) { int s = *i; if ( !FD_ISSET( *i, &writeSet ) ) continue; strategy.onWrite( *this, s ); } #endif }