/// <summary> /// Serialize message and add it to the buffer /// </summary> /// <param name="args">Socket buffer</param> public void Send(SocketBuffer args) { if (!_headerIsSent) { if (!_headerCreated) { var headerLength = CreateHeader(out _contentLength); _headerStream.Position = _contentStream.Position = 0; _headerCreated = true; _bytesLeftToSend = headerLength; } if (_headerStream.CurrentBlockCapacity == 0) { _headerStream.MoveNext(); } var toWrite = Math.Min(NetworkingSettings.BufferSize, Math.Min(_headerStream.CurrentBlockCapacity, _bytesLeftToSend)); args.SetBuffer(_headerStream.CurrentBlock, _headerStream.CurrentBlockOffset, toWrite); _headerStream.Position += toWrite; } else { if (_contentStream.CurrentBlockCapacity == 0) { _contentStream.MoveNext(); } var toWrite = Math.Min(NetworkingSettings.BufferSize, Math.Min(_contentStream.CurrentBlockCapacity, _bytesLeftToSend)); args.SetBuffer(_contentStream.CurrentBlock, _contentStream.CurrentBlockOffset, toWrite); _contentStream.Position += toWrite; } }