Пример #1
0
 public CloseAsyncResult(TransportManagerContainer parent, AsyncCallback callback, TimeSpan timeout,
                         object state)
     : base(parent, callback, state)
 {
     this.timeoutHelper = new TimeoutHelper(timeout);
     this.timeoutHelper.RemainingTime(); //start count down
     this.Begin();
 }
 private TransportManagerContainer(TransportManagerContainer source)
 {
     this.listener = source.listener;
     this.tableLock = source.tableLock;
     this.transportManagers = new List<TransportManager>();
     for (int i = 0; i < source.transportManagers.Count; i++)
     {
         this.transportManagers.Add(source.transportManagers[i]);
     }
 }
Пример #3
0
 TransportManagerContainer(TransportManagerContainer source)
 {
     this.listener          = source.listener;
     this.tableLock         = source.tableLock;
     this.transportManagers = new List <TransportManager>();
     for (int i = 0; i < source.transportManagers.Count; i++)
     {
         this.transportManagers.Add(source.transportManagers[i]);
     }
 }
 public bool TransferTransportManagers(TransportManagerContainer transportManagerContainer)
 {
     lock (base.ThisLock)
     {
         if (base.State != CommunicationState.Opened)
         {
             return(false);
         }
         this.transportManagerContainer = transportManagerContainer;
         return(true);
     }
 }
        public static TransportManagerContainer TransferTransportManagers(TransportManagerContainer source)
        {
            TransportManagerContainer container = null;

            lock (source.tableLock)
            {
                if (source.transportManagers.Count > 0)
                {
                    container = new TransportManagerContainer(source);
                    source.transportManagers.Clear();
                }
            }
            return(container);
        }
 protected override void OnOpening()
 {
     base.OnOpening();
     this.transportManagerContainer = this.listener.GetTransportManagers();
     this.listener = null;
 }
            public bool TransferTransportManagers(TransportManagerContainer transportManagerContainer)
            {
                lock (ThisLock)
                {
                    if (this.State != CommunicationState.Opened)
                    {
                        return false;
                    }

                    this.transportManagerContainer = transportManagerContainer;
                    return true;
                }
            }
 protected override void OnOpening()
 {
     base.OnOpening();
     this.transportManagerContainer = this.listener.GetTransportManagers();
     this.listener = null;
 }
Пример #9
0
        protected TransportChannelListener(TransportBindingElement bindingElement, BindingContext context,
                                           MessageEncoderFactory defaultMessageEncoderFactory, HostNameComparisonMode hostNameComparisonMode)
            : base(context.Binding)
        {
            HostNameComparisonModeHelper.Validate(hostNameComparisonMode);
            this.hostNameComparisonMode = hostNameComparisonMode;
            this.manualAddressing       = bindingElement.ManualAddressing;
            this.maxBufferPoolSize      = bindingElement.MaxBufferPoolSize;
            this.maxReceivedMessageSize = bindingElement.MaxReceivedMessageSize;

            Collection <MessageEncodingBindingElement> messageEncoderBindingElements
                = context.BindingParameters.FindAll <MessageEncodingBindingElement>();

            if (messageEncoderBindingElements.Count > 1)
            {
                throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new InvalidOperationException(SR.GetString(SR.MultipleMebesInParameters)));
            }
            else if (messageEncoderBindingElements.Count == 1)
            {
                this.messageEncoderFactory = messageEncoderBindingElements[0].CreateMessageEncoderFactory();
                context.BindingParameters.Remove <MessageEncodingBindingElement>();
            }
            else
            {
                this.messageEncoderFactory = defaultMessageEncoderFactory;
            }

            if (null != this.messageEncoderFactory)
            {
                this.messageVersion = this.messageEncoderFactory.MessageVersion;
            }
            else
            {
                this.messageVersion = MessageVersion.None;
            }

            ServiceSecurityAuditBehavior auditBehavior = context.BindingParameters.Find <ServiceSecurityAuditBehavior>();

            if (auditBehavior != null)
            {
                this.auditBehavior = auditBehavior.Clone();
            }
            else
            {
                this.auditBehavior = new ServiceSecurityAuditBehavior();
            }

            if ((context.ListenUriMode == ListenUriMode.Unique) && (context.ListenUriBaseAddress == null))
            {
                UriBuilder uriBuilder = new UriBuilder(this.Scheme, DnsCache.MachineName);
                uriBuilder.Path = this.GeneratedAddressPrefix;
                context.ListenUriBaseAddress = uriBuilder.Uri;
            }

            UriSchemeKeyedCollection.ValidateBaseAddress(context.ListenUriBaseAddress, "baseAddress");
            if (context.ListenUriBaseAddress.Scheme != this.Scheme)
            {
                // URI schemes are case-insensitive, so try a case insensitive compare now
                if (string.Compare(context.ListenUriBaseAddress.Scheme, this.Scheme, StringComparison.OrdinalIgnoreCase) != 0)
                {
                    throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgument(
                              "context.ListenUriBaseAddress",
                              SR.GetString(SR.InvalidUriScheme, context.ListenUriBaseAddress.Scheme, this.Scheme));
                }
            }

            Fx.Assert(context.ListenUriRelativeAddress != null, ""); // validated by BindingContext
            if (context.ListenUriMode == ListenUriMode.Explicit)
            {
                this.SetUri(context.ListenUriBaseAddress, context.ListenUriRelativeAddress);
            }
            else // ListenUriMode.Unique:
            {
                string relativeAddress = context.ListenUriRelativeAddress;
                if (relativeAddress.Length > 0 && !relativeAddress.EndsWith("/", StringComparison.Ordinal))
                {
                    relativeAddress += "/";
                }

                this.SetUri(context.ListenUriBaseAddress, relativeAddress + Guid.NewGuid().ToString());
            }

            this.transportManagerContainer = new TransportManagerContainer(this);
        }
 protected override void OnScheduled(TransportManagerContainer parent)
 {
     parent.Open(this.selectTransportManagerCallback);
 }
 protected override void OnScheduled(TransportManagerContainer parent)
 {
     parent.Close(this.timeoutHelper.RemainingTime());
 }
Пример #12
0
 protected override void OnScheduled(TransportManagerContainer parent)
 {
     parent.Close(timeoutHelper.RemainingTime());
 }
Пример #13
0
 protected abstract void OnScheduled(TransportManagerContainer parent);
Пример #14
0
 protected OpenOrCloseAsyncResult(TransportManagerContainer parent, AsyncCallback callback,
                                  object state)
     : base(callback, state)
 {
     this.parent = parent;
 }
 public static TransportManagerContainer TransferTransportManagers(TransportManagerContainer source)
 {
     TransportManagerContainer container = null;
     lock (source.tableLock)
     {
         if (source.transportManagers.Count > 0)
         {
             container = new TransportManagerContainer(source);
             source.transportManagers.Clear();
         }
     }
     return container;
 }
 public CloseAsyncResult(TransportManagerContainer parent, AsyncCallback callback, TimeSpan timeout, object state) : base(parent, callback, state)
 {
     this.timeoutHelper = new TimeoutHelper(timeout);
     this.timeoutHelper.RemainingTime();
     base.Begin();
 }
Пример #17
0
 public OpenAsyncResult(SelectTransportManagersCallback selectTransportManagerCallback, TransportManagerContainer parent,
                        AsyncCallback callback, object state)
     : base(parent, callback, state)
 {
     this.selectTransportManagerCallback = selectTransportManagerCallback;
     this.Begin();
 }
 public OpenAsyncResult(SelectTransportManagersCallback selectTransportManagerCallback, TransportManagerContainer parent, AsyncCallback callback, object state) : base(parent, callback, state)
 {
     this.selectTransportManagerCallback = selectTransportManagerCallback;
     base.Begin();
 }
Пример #19
0
 protected override void OnScheduled(TransportManagerContainer parent)
 {
     parent.Open(this.selectTransportManagerCallback);
 }
 protected OpenOrCloseAsyncResult(TransportManagerContainer parent, AsyncCallback callback, object state) : base(callback, state)
 {
     this.parent = parent;
 }
Пример #21
0
 internal TransportManagerContainer GetTransportManagers()
 {
     return(TransportManagerContainer.TransferTransportManagers(this.transportManagerContainer));
 }
 protected abstract void OnScheduled(TransportManagerContainer parent);
Пример #23
0
        protected TransportChannelListener(TransportBindingElement bindingElement, BindingContext context, System.ServiceModel.Channels.MessageEncoderFactory defaultMessageEncoderFactory, HostNameComparisonMode hostNameComparisonMode) : base(context.Binding)
        {
            HostNameComparisonModeHelper.Validate(hostNameComparisonMode);
            this.hostNameComparisonMode = hostNameComparisonMode;
            this.manualAddressing       = bindingElement.ManualAddressing;
            this.maxBufferPoolSize      = bindingElement.MaxBufferPoolSize;
            this.maxReceivedMessageSize = bindingElement.MaxReceivedMessageSize;
            Collection <MessageEncodingBindingElement> collection = context.BindingParameters.FindAll <MessageEncodingBindingElement>();

            if (collection.Count > 1)
            {
                throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new InvalidOperationException(System.ServiceModel.SR.GetString("MultipleMebesInParameters")));
            }
            if (collection.Count == 1)
            {
                this.messageEncoderFactory = collection[0].CreateMessageEncoderFactory();
                context.BindingParameters.Remove <MessageEncodingBindingElement>();
            }
            else
            {
                this.messageEncoderFactory = defaultMessageEncoderFactory;
            }
            if (this.messageEncoderFactory != null)
            {
                this.messageVersion = this.messageEncoderFactory.MessageVersion;
            }
            else
            {
                this.messageVersion = System.ServiceModel.Channels.MessageVersion.None;
            }
            ServiceSecurityAuditBehavior behavior = context.BindingParameters.Find <ServiceSecurityAuditBehavior>();

            if (behavior != null)
            {
                this.auditBehavior = behavior.Clone();
            }
            else
            {
                this.auditBehavior = new ServiceSecurityAuditBehavior();
            }
            if ((context.ListenUriMode == ListenUriMode.Unique) && (context.ListenUriBaseAddress == null))
            {
                UriBuilder builder = new UriBuilder(this.Scheme, DnsCache.MachineName)
                {
                    Path = this.GeneratedAddressPrefix
                };
                context.ListenUriBaseAddress = builder.Uri;
            }
            UriSchemeKeyedCollection.ValidateBaseAddress(context.ListenUriBaseAddress, "baseAddress");
            if ((context.ListenUriBaseAddress.Scheme != this.Scheme) && (string.Compare(context.ListenUriBaseAddress.Scheme, this.Scheme, StringComparison.OrdinalIgnoreCase) != 0))
            {
                throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgument("context.ListenUriBaseAddress", System.ServiceModel.SR.GetString("InvalidUriScheme", new object[] { context.ListenUriBaseAddress.Scheme, this.Scheme }));
            }
            if (context.ListenUriMode == ListenUriMode.Explicit)
            {
                this.SetUri(context.ListenUriBaseAddress, context.ListenUriRelativeAddress);
            }
            else
            {
                string listenUriRelativeAddress = context.ListenUriRelativeAddress;
                if ((listenUriRelativeAddress.Length > 0) && !listenUriRelativeAddress.EndsWith("/", StringComparison.Ordinal))
                {
                    listenUriRelativeAddress = listenUriRelativeAddress + "/";
                }
                this.SetUri(context.ListenUriBaseAddress, listenUriRelativeAddress + Guid.NewGuid().ToString());
            }
            this.transportManagerContainer = new TransportManagerContainer(this);
        }