/// <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); }
/// <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); }
/// <summary> /// UDP 释放arg /// </summary> /// <param name="arg"></param> public void SetArg(SocketAsyncEventArgs arg) { _bufferManager.FreeBuffer(arg); _argsPool.Enqueue(arg); }