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); } } }
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]); }