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]); } }
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 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()); }
protected override void OnScheduled(TransportManagerContainer parent) { parent.Close(timeoutHelper.RemainingTime()); }
protected abstract void OnScheduled(TransportManagerContainer parent);
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(); }
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(); }
internal TransportManagerContainer GetTransportManagers() { return(TransportManagerContainer.TransferTransportManagers(this.transportManagerContainer)); }
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); }