public override ArraySegment<byte> WriteMessage(Message message, int maxMessageSize, BufferManager bufferManager, int messageOffset)
{
MemoryStream stream = new MemoryStream();
WriteMessage(message, stream);
//XmlWriter writer = XmlWriter.Create(stream, this.m_writerSettings);
//message.WriteMessage(writer);
//writer.Close();
byte[] messageBytes = stream.GetBuffer();
int messageLength = (int)stream.Position;
stream.Close();
int totalLength = messageLength + messageOffset;
byte[] totalBytes = bufferManager.TakeBuffer(totalLength);
Array.Copy(messageBytes, 0, totalBytes, messageOffset, messageLength);
ArraySegment<byte> byteArray = new ArraySegment<byte>(totalBytes, messageOffset, messageLength);
return byteArray;
}
public override void WriteMessage(Message message, Stream stream)
{
if ((this.m_writerSettings.Encoding.WebName == ValidatingUTF8.WebName) || (this.m_writerSettings.Encoding.WebName == ValidatingUTF16.WebName) || (this.m_writerSettings.Encoding.WebName == ValidatingBEUTF16.WebName))
{
XmlDictionaryWriter writer = XmlDictionaryWriter.CreateTextWriter(stream, this.m_writerSettings.Encoding, false);
message.WriteMessage(writer);
writer.Close();
}
else
{
XmlWriter writer = XmlWriter.Create(stream, this.m_writerSettings);
message.WriteMessage(writer);
writer.Close();
}
}