public void ShouldWriteWidthWposIs0AndSize() { _buffer = new MessageBuffer(); byte[] bytes = new byte[] { (byte)'1', (byte)'a', (byte)4 }; _buffer.Write(bytes, 2); Assert.AreEqual((byte)'1', _buffer.Data()[0]); Assert.AreEqual((byte)'a', _buffer.Data()[1]); Assert.AreNotEqual((byte)4, _buffer.Data()[2]); }
public void ShouldWriteWidthWposIsNot0() { _buffer = new MessageBuffer(); _buffer.WriteCompleted(2); byte[] bytes = new byte[] { (byte)'1', (byte)'a', (byte)4 }; _buffer.Write(bytes, bytes.Length); Assert.AreEqual((byte)'1', _buffer.Data()[2]); Assert.AreEqual((byte)'a', _buffer.Data()[3]); Assert.AreEqual((byte)4, _buffer.Data()[4]); }
protected void AsyncProcessQueue() { if (_closed.Value) { return; } if (_isWritingAsync.Exchange(true)) { return; } MessageBuffer buffer = _writeQueue.Peek(); try { _socket.BeginSend(buffer.Data(), buffer.Rpos(), buffer.GetActiveSize(), SocketFlags.None, out _error, SendDataCallback, null); } catch (Exception ex) { CloseSocket(); if (LogException) { FEL_LOG_WARN("network", "SocketBase::AsyncProcessQueue: {0} errored when _socket.BeginSend: ({1})", _remoteAddress.ToString(), ex.Message); } } }
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 ShouldResize() { var newSize = 1024; _buffer.Resize(newSize); Assert.AreEqual(newSize, _buffer.Data().Length); }
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]); }
public ByteBuffer(MessageBuffer buffer) { _rpos = 0; _wpos = 0; _size = buffer.Wpos(); _storage = Marshal.AllocHGlobal(_size); buffer.Data().AsSpan(0, _size).CopyTo(new Span <byte>((void *)_storage, _size)); }