Beispiel #1
0
 /// <summary>
 /// 释放IUserToken
 /// </summary>
 /// <param name="userToken"></param>
 public bool Free(IUserToken userToken)
 {
     if (userToken == null || userToken.Socket == null)
     {
         return(false);
     }
     if (_session.Del(userToken.ID))
     {
         try
         {
             if (userToken.Socket.Connected)
             {
                 try
                 {
                     userToken.Socket.Shutdown(SocketShutdown.Both);
                 }
                 catch { }
                 userToken.Socket.Close();
             }
         }
         catch { }
         _bufferManager.FreeBuffer(userToken.ReadArgs);
         _argsPool.Enqueue(userToken.ReadArgs);
         _argsPool.Enqueue(userToken.WriteArgs);
         _userTokenPool.Enqueue(userToken);
         return(true);
     }
     return(false);
 }
Beispiel #2
0
 /// <summary>
 /// 释放IUserToken
 /// </summary>
 /// <param name="userToken"></param>
 public bool Free(IUserToken userToken)
 {
     if (userToken == null || userToken.Socket == null)
     {
         return(false);
     }
     if (_session.Del(userToken.ID, out MemoryCachItem <IUserToken> mc))
     {
         try
         {
             if (userToken.Socket.Connected)
             {
                 userToken.Socket.Close();
             }
         }
         catch { }
         _bufferManager.FreeBuffer(userToken.ReadArgs);
         _argsPool.Enqueue(userToken.ReadArgs);
         _argsPool.Enqueue(userToken.WriteArgs);
         _userTokenPool.Enqueue(userToken);
         return(true);
     }
     return(false);
 }
Beispiel #3
0
 /// <summary>
 /// UDP 释放arg
 /// </summary>
 /// <param name="arg"></param>
 public void SetArg(SocketAsyncEventArgs arg)
 {
     _bufferManager.FreeBuffer(arg);
     _argsPool.Enqueue(arg);
 }