voidAuthenticateUser(inta_ClientID);// Called by cAuthenticator to auth the specified user
staticvoidServerListenThread(void*a_Args);
constAString&GetServerID(void)const;
voidClientDestroying(constcClientHandle*a_Client);// Called by cClientHandle::Destroy(); stop m_SocketThreads from calling back into a_Client
voidNotifyClientWrite(constcClientHandle*a_Client);// Notifies m_SocketThreads that client has something to be written
voidWriteToClient(constcSocket*a_Socket,constAString&a_Data);// Queues outgoing data for the socket through m_SocketThreads
voidQueueClientClose(constcSocket*a_Socket);// Queues the socket to close when all its outgoing data is sent
voidRemoveClient(constcSocket*a_Socket);// Removes the socket from m_SocketThreads
private:
friendclasscRoot;// so cRoot can create and destroy cServer
/// When NotifyClientWrite() is called, it is queued for this thread to process (to avoid deadlocks between cSocketThreads, cClientHandle and cChunkMap)