public override void WriteMessage(Message message, Stream stream) { using (XmlWriter writer = XmlWriter.Create(stream, _writerSettings)) { message.WriteMessage(writer); } }
public override ArraySegment<byte> WriteMessage(Message message, int maxMessageSize, BufferManager bufferManager, int messageOffset) { ArraySegment<byte> messageBuffer; byte[] writeBuffer = null; int messageLength; using (MemoryStream stream = new MemoryStream()) { using (XmlWriter writer = XmlWriter.Create(stream, _writerSettings)) { message.WriteMessage(writer); } // TryGetBuffer is the preferred path but requires 4.6 //stream.TryGetBuffer(out messageBuffer); writeBuffer = stream.ToArray(); messageBuffer = new ArraySegment<byte>(writeBuffer); messageLength = (int)stream.Position; } int totalLength = messageLength + messageOffset; byte[] totalBytes = bufferManager.TakeBuffer(totalLength); Array.Copy(messageBuffer.Array, 0, totalBytes, messageOffset, messageLength); ArraySegment<byte> byteArray = new ArraySegment<byte>(totalBytes, messageOffset, messageLength); return byteArray; }