очікуючих клієнтів
//в списку готових до роботи клієнтів
private void MoveToReady (IClientHandler handler)
{(m_handlersMutex)
{_ waiting. Remove (handler); _ ready. Add (handler);
handler. Start ();
}
}
# region IServer Members
//Підписка на події сервераIServer. SetCallbacks (IServerCallbacks callbacks)
{_ callbacks=callbacks;
}
//Початок робота сервера
bool IServer. Start (Config config)
{
m_state=State. Listening;
lock (this)
{_ users. Clear (); (User user in config. Users)
{_ users. Add (user);
}
}
m_listener=new TcpListener (IPAddress. Any, config. Port);
m_listenThread=new Thread (new ThreadStart (ListenForClients));
m_listenThread. Start ();
m_playbackThread=new Thread (new ThreadStart (Playback));
m_playbackThread. Start ();
true;
}
//Закінчення роботи сервераIServer. Stop ()
{
CloseAllConnections () ;. Log («Server: Stopped listening.»);
true;
}
# endregion
# region IClientHandlerCallbacks Members
//Зворотний виклик від обробника клієнта, що повідомляє про відключення
//клієнта
void IClientHandlerCallbacks. OnDisconnect (IClientHandler handler)
{
lock (m_waiting)
{_ waiting. Remove (handler);
}
(m_ready)
{_ ready. Remove (handler);
}
();
}
//Зворотний виклик від обробника клієнта, запитувач
//список працюючих користувачів
string [] IClientHandlerCallbacks. GetUsers ()
{[] users=null;
(m_ready)
{= new string [m_ready. Count]; (int i=0; i lt; m_ready. Count; i ++)
{[i]=m_ready [i] .GetUserName ();
}
}
users;
}
# endregion
}