コード例 #1
0
 protected override IAsyncResult BeginSendResolveResponse(
     IDiscoveryResponseContractCD1 responseChannel,
     DiscoveryMessageSequence discoveryMessageSequence,
     EndpointDiscoveryMetadata matchingEndpoint,
     AsyncCallback callback,
     object state)
 {
     return(responseChannel.BeginResolveMatchOperation(
                ResolveMatchesMessageCD1.Create(
                    discoveryMessageSequence,
                    matchingEndpoint),
                callback,
                state));
 }
コード例 #2
0
        public void EndResolveOperation(IAsyncResult result)
        {
            ResolveMatchesMessageCD1 response = base.Channel.EndResolveOperation(result);
            AsyncOperationContext    context  = (AsyncOperationContext)result.AsyncState;

            if ((response != null) && (response.ResolveMatches != null) && (response.ResolveMatches.ResolveMatch != null))
            {
                this.responseReceiver.ResolveMatchOperation(
                    context.OperationId,
                    DiscoveryUtility.ToDiscoveryMessageSequenceOrNull(response.MessageSequence),
                    response.ResolveMatches.ResolveMatch.ToEndpointDiscoveryMetadata());
            }
            else
            {
                this.responseReceiver.PostResolveCompletedAndRemove(context.OperationId, false, null);
            }
        }
コード例 #3
0
        public void ResolveOperation(ResolveCriteria resolveCriteria)
        {
            ResolveMessageCD1 request = new ResolveMessageCD1();

            request.Resolve = ResolveCriteriaCD1.FromResolveCriteria(resolveCriteria);

            ResolveMatchesMessageCD1 response = base.Channel.ResolveOperation(request);

            if ((response != null) && (response.ResolveMatches != null) && (response.ResolveMatches.ResolveMatch != null))
            {
                this.responseReceiver.ResolveMatchOperation(
                    OperationContext.Current.IncomingMessageHeaders.RelatesTo,
                    DiscoveryUtility.ToDiscoveryMessageSequenceOrNull(response.MessageSequence),
                    response.ResolveMatches.ResolveMatch.ToEndpointDiscoveryMetadata());
            }
            else
            {
                this.responseReceiver.PostResolveCompletedAndRemove(OperationContext.Current.IncomingMessageHeaders.RelatesTo, false, null);
            }
        }
コード例 #4
0
 public IAsyncResult BeginResolveMatchOperation(ResolveMatchesMessageCD1 response, AsyncCallback callback, object state)
 {
     Fx.Assert(response != null, "The response message cannot be null.");
     if ((response.MessageSequence != null) && (response.ResolveMatches != null) && (response.ResolveMatches.ResolveMatch != null))
     {
         this.responseReceiver.ResolveMatchOperation(
             OperationContext.Current.IncomingMessageHeaders.RelatesTo,
             response.MessageSequence.ToDiscoveryMessageSequence(),
             response.ResolveMatches.ResolveMatch.ToEndpointDiscoveryMetadata());
     }
     else
     {
         if (response.MessageSequence == null && TD.DiscoveryMessageWithNullMessageSequenceIsEnabled())
         {
             TD.DiscoveryMessageWithNullMessageSequence(
                 ProtocolStrings.TracingStrings.ResolveMatches,
                 OperationContext.Current.IncomingMessageHeaders.MessageId.ToString());
         }
     }
     return(new CompletedAsyncResult(callback, state));
 }