示例#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, out MemoryCacheItem <IUserToken> mc))
     {
         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);
 }
示例#2
0
 /// <summary>
 /// 释放IUserToken
 /// </summary>
 /// <param name="userToken"></param>
 public bool Free(IUserToken userToken)
 {
     if (_session.Get(userToken.ID) != null)
     {
         _session.Del(userToken.ID);
         if (userToken.Socket != null)
         {
             try
             {
                 if (userToken.Socket.Connected)
                 {
                     userToken.Socket.Shutdown(SocketShutdown.Both);
                 }
             }
             catch { }
             _bufferManager.FreeBuffer(userToken.ReadArgs);
             _argsPool.Push(userToken.ReadArgs);
             _argsPool.Push(userToken.WriteArgs);
             userToken.Dispose();
             return(true);
         }
     }
     return(false);
 }