public void SendMessage(RelayMessage message) { if (message.IsTwoWayMessage) { MemoryStream replyStream; ResourcePoolItem <MemoryStream> bufferItem = null; try { bufferItem = bufferPool.GetItem(); RelayMessageFormatter.WriteRelayMessage(message, bufferItem.Item); bufferItem.Item.Seek(0, SeekOrigin.Begin); replyStream = socketClient.SendSync( (int)SocketCommand.HandleSyncMessage, bufferItem.Item); } finally { if (bufferItem != null) { bufferPool.ReleaseItem(bufferItem); } } if (replyStream != null) { RelayMessage replyMessage = RelayMessageFormatter.ReadRelayMessage(replyStream); message.ExtractResponse(replyMessage); } //this doesn't make any sense, the incoming message already //has error occured with no respones? fwise 5/09 else if (message.ErrorOccurred) { message.Payload = null; } } else { ResourcePoolItem <MemoryStream> bufferItem = null; try { bufferItem = bufferPool.GetItem(); RelayMessageFormatter.WriteRelayMessage(message, bufferItem.Item); bufferItem.Item.Seek(0, SeekOrigin.Begin); socketClient.SendOneWay( (int)SocketCommand.HandleOneWayMessage, bufferItem.Item); } finally { if (bufferItem != null) { bufferPool.ReleaseItem(bufferItem); } } } }
internal ResourcePoolItem <MemoryStream> GetPooledStream() { return(rebufferedStreamPool.GetItem()); }