SocketMonitor::SocketMonitor( int timeout ) : m_timeout( timeout ) { socket_init(); std::pair<int, int> sockets = socket_createpair(); m_signal = sockets.first; m_interrupt = sockets.second; socket_setnonblock( m_signal ); socket_setnonblock( m_interrupt ); m_readSockets.insert( m_interrupt ); m_timeval.tv_sec = 0; m_timeval.tv_usec = 0; #ifndef SELECT_DECREMENTS_TIME m_ticks = clock(); #endif }
bool SocketMonitor::addRead( int s ) { socket_setnonblock( s ); Sockets::iterator i = m_readSockets.find( s ); if( i != m_readSockets.end() ) return false; m_readSockets.insert( s ); return true; }
bool SocketMonitor::addConnect( int s ) { QF_STACK_PUSH(SocketMonitor::addConnect) socket_setnonblock( s ); Sockets::iterator i = m_connectSockets.find( s ); if( i != m_connectSockets.end() ) return false; m_connectSockets.insert( s ); return true; QF_STACK_POP }