public ContractDescription GetDiscoveryContract(ServiceDiscoveryMode discoveryMode)
 {
     if (discoveryMode == ServiceDiscoveryMode.Adhoc)
     {
         if (this.adhocDiscoveryContract == null)
         {
             lock (this.contractLock)
             {
                 if (this.adhocDiscoveryContract == null)
                 {
                     this.adhocDiscoveryContract = DiscoveryUtility.GetContract(typeof(IDiscoveryContractAdhoc11));
                 }
             }
         }
         return(this.adhocDiscoveryContract);
     }
     else if (discoveryMode == ServiceDiscoveryMode.Managed)
     {
         if (this.managedDiscoveryContract == null)
         {
             lock (this.contractLock)
             {
                 if (this.managedDiscoveryContract == null)
                 {
                     this.managedDiscoveryContract = DiscoveryUtility.GetContract(typeof(IDiscoveryContractManaged11));
                 }
             }
         }
         return(this.managedDiscoveryContract);
     }
     else
     {
         throw FxTrace.Exception.AsError(new ArgumentException(SR.DiscoveryIncorrectMode(discoveryMode)));
     }
 }
 public IAsyncResult BeginResolveMatchOperation(ResolveMatchesMessageApril2005 response, AsyncCallback callback, object state)
 {
     Fx.Assert(response != null, "The response message cannot be null.");
     if ((response.ResolveMatches != null) && (response.ResolveMatches.ResolveMatch != null))
     {
         this.responseReceiver.ResolveMatchOperation(
             OperationContext.Current.IncomingMessageHeaders.RelatesTo,
             DiscoveryUtility.ToDiscoveryMessageSequenceOrNull(response.MessageSequence),
             response.ResolveMatches.ResolveMatch.ToEndpointDiscoveryMetadata());
     }
     return(new CompletedAsyncResult(callback, state));
 }
 public ContractDescription GetAnnouncementContract()
 {
     if (this.announcementContract == null)
     {
         lock (this.contractLock)
         {
             if (this.announcementContract == null)
             {
                 this.announcementContract = DiscoveryUtility.GetContract(typeof(IAnnouncementContract11));
             }
         }
     }
     return(this.announcementContract);
 }
Esempio n. 4
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);
            }
        }
        public void EndProbeOperation(IAsyncResult result)
        {
            ProbeMatchesMessage11 response = base.Channel.EndProbeOperation(result);
            AsyncOperationContext context  = (AsyncOperationContext)result.AsyncState;

            if ((response != null) && (response.ProbeMatches != null))
            {
                this.responseReceiver.ProbeMatchOperation(
                    context.OperationId,
                    DiscoveryUtility.ToDiscoveryMessageSequenceOrNull(response.MessageSequence),
                    DiscoveryUtility.ToEndpointDiscoveryMetadataCollection(response.ProbeMatches),
                    true);
            }
            else
            {
                this.responseReceiver.PostFindCompletedAndRemove(context.OperationId, false, null);
            }
        }
Esempio n. 6
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);
            }
        }
Esempio n. 7
0
        public void ProbeOperation(FindCriteria findCriteria)
        {
            ProbeMessageCD1 request = new ProbeMessageCD1();

            request.Probe = FindCriteriaCD1.FromFindCriteria(findCriteria);

            ProbeMatchesMessageCD1 response = base.Channel.ProbeOperation(request);

            if ((response != null) && (response.ProbeMatches != null))
            {
                this.responseReceiver.ProbeMatchOperation(
                    OperationContext.Current.IncomingMessageHeaders.RelatesTo,
                    DiscoveryUtility.ToDiscoveryMessageSequenceOrNull(response.MessageSequence),
                    DiscoveryUtility.ToEndpointDiscoveryMetadataCollection(response.ProbeMatches),
                    true);
            }
            else
            {
                this.responseReceiver.PostFindCompletedAndRemove(OperationContext.Current.IncomingMessageHeaders.RelatesTo, false, null);
            }
        }
        public IAsyncResult BeginProbeMatchOperation(ProbeMatchesMessageCD1 response, AsyncCallback callback, object state)
        {
            Fx.Assert(response != null, "The response message cannot be null.");
            if ((response.MessageSequence != null) && (response.ProbeMatches != null))
            {
                this.responseReceiver.ProbeMatchOperation(
                    OperationContext.Current.IncomingMessageHeaders.RelatesTo,
                    response.MessageSequence.ToDiscoveryMessageSequence(),
                    DiscoveryUtility.ToEndpointDiscoveryMetadataCollection(response.ProbeMatches),
                    false);
            }
            else
            {
                if (response.MessageSequence == null && TD.DiscoveryMessageWithNullMessageSequenceIsEnabled())
                {
                    TD.DiscoveryMessageWithNullMessageSequence(
                        ProtocolStrings.TracingStrings.ProbeMatches,
                        OperationContext.Current.IncomingMessageHeaders.MessageId.ToString());
                }
            }

            return(new CompletedAsyncResult(callback, state));
        }
Esempio n. 9
0
 protected override DiscoveryMessageSequence GetMessageSequence(ByeMessageCD1 message)
 {
     return(DiscoveryUtility.ToDiscoveryMessageSequenceOrNull(message.MessageSequence));
 }
 protected override DiscoveryMessageSequence GetMessageSequence(HelloMessageApril2005 message)
 {
     return(DiscoveryUtility.ToDiscoveryMessageSequenceOrNull(message.MessageSequence));
 }