/// <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); }
/// <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); }