Exemplo n.º 1
0
 /// <summary>
 /// Only work for tcp
 /// </summary>
 protected virtual void OnConnected()
 {
     if (!ClientPool.ContainsKey(Session.RemoteIPEndPoint))
     {
         ClientPool.TryAdd(Session.RemoteIPEndPoint, this);
     }
 }
Exemplo n.º 2
0
 /// <summary>
 /// Only work for tcp
 /// </summary>
 protected virtual void OnDisconnected()
 {
     if (ClientPool.ContainsKey(Session.RemoteIPEndPoint))
     {
         ClientPool.Remove(Session.RemoteIPEndPoint);
     }
     Dispose();
 }
Exemplo n.º 3
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);
         }
     }
 }
Exemplo n.º 4
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();
                }
            }
        }