public void Remove(AsyncSocketUserToken userToken) { lock (_mList) { _mList.Remove(userToken); } }
protected bool MSendAsync; //标识是否有发送异步事件 public AsyncSocketInvokeElement(AsyncSocketServer asyncSocketServer, AsyncSocketUserToken asyncSocketUserToken) { MAsyncSocketServer = asyncSocketServer; MAsyncSocketUserToken = asyncSocketUserToken; MSendAsync = false; }
public void Add(AsyncSocketUserToken userToken) { lock (_mList) { _mList.Add(userToken); } }
private void BuildingSocketInvokeElement(AsyncSocketUserToken userToken) { userToken.AsyncSocketInvokeElement = new EsProtocol(this, userToken); if (userToken.AsyncSocketInvokeElement != null) { Program.Logger.InfoFormat("Building socket invoke element {0}.Local Address: {1}, Remote Address: {2}", userToken.AsyncSocketInvokeElement, userToken.ConnectSocket.LocalEndPoint, userToken.ConnectSocket.RemoteEndPoint); } }
public void CopyList(ref AsyncSocketUserToken[] array) { //if (array == null) throw new ArgumentNullException(nameof(array)); lock (_mList) { array = new AsyncSocketUserToken[_mList.Count]; _mList.CopyTo(array); } }
public void Push(AsyncSocketUserToken item) { if (item == null) { throw new ArgumentException("Items added to a AsyncSocketUserToken cannot be null"); } lock (_mPool) { _mPool.Push(item); } }
public void CloseClientSocket(AsyncSocketUserToken userToken) { if (userToken.ConnectSocket == null) { return; } var socketInfo = $"Local Address: {userToken.ConnectSocket.LocalEndPoint} Remote Address: {userToken.ConnectSocket.RemoteEndPoint}"; Program.Logger.InfoFormat("Client connection disconnected. {0}", socketInfo); Program.OutputLog.LogFormat("Client connection disconnected. {0}", socketInfo); if (userToken.ConnectSocket.Connected) { try { userToken.ConnectSocket.Shutdown(SocketShutdown.Both); } catch (Exception e) { Program.Logger.ErrorFormat("CloseClientSocket Disconnect client {0} error, message: {1}", socketInfo, e.Message); Program.OutputLog.LogFormat("CloseClientSocket Disconnect client {0} error, message: {1}", socketInfo, e.Message); } userToken.ConnectSocket.Close(); } userToken.ConnectSocket = null; //释放引用,并清理缓存,包括释放协议对象等资源 userToken.ReceiveBuffer.Clear(userToken.ReceiveBuffer.DataCount); userToken.SendBuffer.ClearPacket(); _mMaxNumberAcceptedClients.Release(); _mAsyncSocketUserTokenPool.Push(userToken); AsyncSocketUserTokenList.Remove(userToken); }
public void Init() { for (var i = 0; i < _mNumConnections; i++) //按照连接数建立读写对象 { var userToken = new AsyncSocketUserToken(_mReceiveBufferSize); userToken.ReceiveEventArgs.Completed += IO_Completed; userToken.SendEventArgs.Completed += IO_Completed; _mAsyncSocketUserTokenPool.Push(userToken); } var adjustTimeSchedule = new ScheduleTask(0, true, ScheduleType.StartOnCondition); adjustTimeSchedule.OnScheduleExecuting += delegate(object sender, ScheduleTaskExecuteEventArgs args) { var task = (ScheduleTask)sender; if (task == null || task.LastExecuteTime.Date == DateTime.Today.Date) { return; } if (DateTime.Now.Hour == 3 && DateTime.Now.Minute == 0 && DateTime.Now.Second < 30) { AsyncSocketUserTokenList.AdjestTime(); } }; adjustTimeSchedule.StartCondition = running => { if (running) { return(true); } return(DateTime.Now.Hour == 3); }; ScheduleManager.Register(adjustTimeSchedule); EsProtocolMgr = new EsProtocolMgr(); }