11 #include <format/format.h> 12 #include "../clib/compilerspecifics.h" 13 #include "../clib/esignal.h" 14 #include "../clib/logfacility.h" 15 #include "../clib/socketsvc.h" 16 #include "../clib/stlutil.h" 17 #include "../clib/threadhelp.h" 18 #include "../clib/wnsckt.h" 19 #include "../plib/systemstate.h" 71 struct sockaddr host_addr;
72 socklen_t host_addrlen =
sizeof host_addr;
90 tmp.Format(
"Client#{} connected from {} ({} connections)" )
93 if ( getsockname(
client->
csocket, &host_addr, &host_addrlen ) == 0 )
97 POLLOG << tmp.str() <<
"\n";
112 std::list<std::unique_ptr<UoClientThread>> login_clients;
115 unsigned int timeout = 2;
116 if ( !login_clients.empty() )
123 std::unique_ptr<UoClientThread> thread(
new UoClientThread( ls, SL ) );
126 login_clients.push_back( std::move( thread ) );
135 auto itr = login_clients.begin();
136 while ( itr != login_clients.end() )
138 if ( ( *itr )->client !=
nullptr && ( *itr )->client->isReallyConnected() )
142 itr = login_clients.erase( itr );
146 if ( ( *itr )->client->isConnected() && ( *itr )->client->chr )
149 itr = login_clients.erase( itr );
158 itr = login_clients.erase( itr );
SocketClientThread(SocketListener &SL)
static void start_thread(SocketClientThread *instance)
bool client_io_thread(Network::Client *client, bool login)
Crypt::TCryptInfo encryption
UoClientThread(UoClientListener *def, Clib::SocketListener &SL)
virtual ~UoClientThread()
void start_thread(void(*entry)(void *), const char *thread_name, void *arg)
virtual void run() POL_OVERRIDE
void CoreSetSysTrayToolTip(const std::string &text, Priority priority)
void start_uo_client_listeners(void)
NetworkManager networkManager
std::string tostring(const Bscript::BTokenType &v)
const char * AddressToString(struct sockaddr *addr)
UoClientThread(UoClientThread ©)
unsigned short listen_port
struct sockaddr peer_address() const
void uo_client_listener_thread(void *arg)
std::vector< UoClientListener > uoclient_listeners
bool GetConnection(unsigned int timeout_sec)
std::atomic< bool > exit_signalled