コード例 #1
0
            protected override void MessageReceived(Message message, Action dequeuedCallback)
            {
                RelayViaHeader relayViaHeader = RelayViaHeader.ReadHeader(message);

                message = this.messageWrapper.UnwrapMessage(message);
                if (relayViaHeader != null)
                {
                    message.Properties.Via = relayViaHeader.Via;
                }
                RelayedOnewayChannelListener[] relayedOnewayChannelListenerArray = this.listener.Lookup(message.Properties.Via);
                if (relayedOnewayChannelListenerArray == null)
                {
                    MessagingClientEtwProvider.Provider.RelayListenerFailedToDispatchMessage(base.Activity, base.Uri.AbsoluteUri, message.Properties.Via.AbsoluteUri);
                    message.Close();
                    dequeuedCallback();
                    return;
                }
                if ((int)relayedOnewayChannelListenerArray.Length == 1)
                {
                    relayedOnewayChannelListenerArray[0].EnqueueAndDispatch(message, dequeuedCallback);
                    return;
                }
                Action        action        = dequeuedCallback;
                MessageBuffer messageBuffer = message.CreateBufferedCopy(65536);

                for (int i = 0; i < (int)relayedOnewayChannelListenerArray.Length; i++)
                {
                    relayedOnewayChannelListenerArray[i].EnqueueAndDispatch(messageBuffer.CreateMessage(), action);
                    action = null;
                }
            }
コード例 #2
0
 public static RelayViaHeader ReadHeader(Message message)
 {
     return(RelayViaHeader.ReadHeader(message.Headers));
 }