protected void SendErrorMessage(ServiceResult error)
{
// Utils.Trace("Channel {0}: SendErrorMessage()", ChannelId);
byte[] buffer = BufferManager.TakeBuffer(SendBufferSize, "SendErrorMessage");
try
{
BinaryEncoder encoder = new BinaryEncoder(buffer, 0, SendBufferSize, Quotas.MessageContext);
encoder.WriteUInt32(null, TcpMessageType.Error);
encoder.WriteUInt32(null, 0);
WriteErrorMessageBody(encoder, error);
int size = encoder.Close();
UpdateMessageSize(buffer, 0, size);
BeginWriteMessage(new ArraySegment<byte>(buffer, 0, size), Int32.MaxValue, null);
buffer = null;
}
finally
{
if (buffer != null)
{
BufferManager.ReturnBuffer(buffer, "SendErrorMessage");
}
}
}