コード例 #1
0
 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);
             }
         }
     }
 }
コード例 #2
0
 internal ResourcePoolItem <MemoryStream> GetPooledStream()
 {
     return(rebufferedStreamPool.GetItem());
 }