void SocketReaderRunnable::run() { if(!sSocketManager.GetEventBase()) { sLog.outError(" Couldn't start Socket worker thread. Event_base is wrong!"); return; } sLog.outString(" Socket worker thread is started"); event_base* pBase = sSocketManager.GetEventBase(); int res = 0; while(!bStop) { if(pBase != sSocketManager.GetEventBase()) sLog.outError("FATAL!!!!"); Sleep(10); res = event_base_loop(pBase, EVLOOP_ONCE); // 0 if successful, // -1 if an error occurred // 1 if no events were registered. if(res == -1) { sLog.outError(" Critical error is occured in event_loot. Exit."); sSocketManager.DisconnectAll(); break; } else if(res == 1) { sLog.outError(" No events registered for event_loot. Lets check."); sSocketManager.Debug_CheckSockets(); } sSocketManager.ClearErasedSockets(); } sLog.outString(" Socket worker thread is finished"); }