static DiscoveryOperationContextExtension GetDiscoveryOperationContextExtension(OperationContext operationContext)
        {
            DiscoveryOperationContextExtension operationContextExtension =
                operationContext.Extensions.Find <DiscoveryOperationContextExtension>();

            if (operationContextExtension == null)
            {
                operationContextExtension = new DiscoveryOperationContextExtension();
            }

            return(operationContextExtension);
        }
        public DiscoveryEndpoint(DiscoveryVersion discoveryVersion, ServiceDiscoveryMode discoveryMode, Binding binding, EndpointAddress endpointAddress)
            : base(GetDiscoveryContract(discoveryVersion, discoveryMode))
        {
            base.IsSystemEndpoint = true;

            this.discoveryOperationContextExtension = new DiscoveryOperationContextExtension(TimeSpan.Zero, discoveryMode, discoveryVersion);

            base.Behaviors.Add(new DiscoveryOperationContextExtensionInitializer(this.discoveryOperationContextExtension));
            base.Behaviors.Add(new DiscoveryEndpointValidator());

            base.Address = endpointAddress;
            base.Binding = binding;
        }
        public DiscoveryOperationContext(OperationContext operationContext)
        {
            Fx.Assert(operationContext != null, "The operationContext must be non null.");

            if (Fx.Trace.IsEtwProviderEnabled)
            {
                this.eventTraceActivity = EventTraceActivityHelper.TryExtractActivity(operationContext.IncomingMessage);
            }

            this.operationContext          = operationContext;
            this.operationContextExtension = DiscoveryOperationContext.GetDiscoveryOperationContextExtension(this.operationContext);
            this.messageProperty           = DiscoveryOperationContext.GetDiscoveryMessageProperty(this.operationContext);

            this.thisLock = new object();
        }
 public DiscoveryOperationContextExtensionInitializer(DiscoveryOperationContextExtension discoveryOperationContextExtension)
 {
     this.discoveryOperationContextExtension = discoveryOperationContextExtension;
 }