public void Add(ChatClient chatClient) { _clientPool.Add(chatClient); if (_clientPool.GetConnectedClients().Count == 2) { _manualResetEvent.Set(); } }
public ClientBase(ISession session) { Session = session; EventBinding(); lock (ClientPool) { // we fire this when there are no record in Sessions if (!ClientPool.ContainsKey(session.RemoteIPEndPoint)) { ClientPool.Add(Session.RemoteIPEndPoint, this); } } }
public void AddJoin(JoinInfo joinin) { if (joinin != null) { if (ClientPool.ContainsKey(joinin.ClientID) == false) { ConnectedClientCount += 1; VirtualClient client = new VirtualClient(joinin); CharactorPool.JoinRoom(joinin.Charactor); //申请写锁 readerWriterLock.EnterWriteLock(); ClientPool.Add(joinin.ClientID, client); //释放写锁 readerWriterLock.ExitWriteLock(); AsyncClient(); } } }
private void HandleNewConnection(TcpClient e) { Logger.LogInformation("New client connection: {0}", e); ClientHandle?client = null; try { _clientFactory.TryLogin(e); if (!_clientFactory.HasConnection) { return; } client = _clientFactory.Connection; _clients.Add(client); client = null; } finally { client?.Dispose(); } }