Пример #1
0
 public void Add(ChatClient chatClient)
 {
     _clientPool.Add(chatClient);
     if (_clientPool.GetConnectedClients().Count == 2)
     {
         _manualResetEvent.Set();
     }
 }
Пример #2
0
 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);
         }
     }
 }
Пример #3
0
        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();
                }
            }
        }
Пример #4
0
        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();
            }
        }