コード例 #1
0
ファイル: SocketBase.cs プロジェクト: FelCore/FelCore
        public void AsyncRead()
        {
            if (!IsOpen())
            {
                return;
            }

            _readBuffer.Normalize();
            _readBuffer.EnsureFreeSpace();

            try
            {
                _socket.BeginReceive(_readBuffer.Data(), _readBuffer.Wpos(), _readBuffer.GetRemainingSpace(),
                                     SocketFlags.None, out _error, ReceiveDataCallback, null);
            }
            catch (Exception ex)
            {
                CloseSocket();

                if (LogException)
                {
                    FEL_LOG_WARN("network", "SocketBase::AsyncRead: {0} errored when _socket.BeginReceive: ({1})", _remoteAddress.ToString(), ex.Message);
                }
            }
        }
コード例 #2
0
        public void ShouldNormalize()
        {
            _buffer = new MessageBuffer();
            byte[] bytes = new byte[] { (byte)'1', (byte)'a', (byte)4, (byte)'R', (byte)'y', (byte)'a', (byte)'n' };
            _buffer.Write(bytes, bytes.Length);

            _buffer.ReadCompleted(2);

            _buffer.Normalize();

            Assert.AreEqual(0, _buffer.Rpos());
            Assert.AreEqual(7 - 2, _buffer.Wpos());
            Assert.AreEqual((byte)4, _buffer.Data()[0]);
            Assert.AreEqual((byte)'R', _buffer.Data()[1]);
            Assert.AreEqual((byte)'y', _buffer.Data()[2]);
            Assert.AreEqual((byte)'a', _buffer.Data()[3]);
            Assert.AreEqual((byte)'n', _buffer.Data()[4]);
        }