internal bool OnSendCompleted() { _activeTime = DateTime.UtcNow; _sendAsync = false; SendBufferManager asyncSendBufferManager = _token.SendBuffer; //清除已发送的包 asyncSendBufferManager.ClearFirstPacket(); int offset = 0; int count = 0; if (asyncSendBufferManager.GetFirstPacket(ref offset, ref count)) { _sendAsync = true; return(_socketServer.SendAsyncEventArgs(_token.ConnectSocket, _token.SendEventArgs, asyncSendBufferManager.BufferManager.Buffer, offset, count)); } else { return(OnSendCallback()); } }
public bool Send(byte[] buffer, int offset, int count) { SendBufferManager asyncSendBufferManager = _token.SendBuffer; asyncSendBufferManager.StartPacket(); OnSend(asyncSendBufferManager.BufferManager, buffer, offset, count); asyncSendBufferManager.EndPacket(); bool result = true; if (!_sendAsync) { int packetOffset = 0; int packetCount = 0; if (asyncSendBufferManager.GetFirstPacket(ref packetOffset, ref packetCount)) { _sendAsync = true; result = _socketServer.SendAsyncEventArgs(_token.ConnectSocket, _token.SendEventArgs, asyncSendBufferManager.BufferManager.Buffer, packetOffset, packetCount); } } return(result); }