Ejemplo n.º 1
0
        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());
            }
        }
Ejemplo n.º 2
0
        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);
        }