Code:
/ WCF / WCF / 3.5.30729.1 / untmp / Orcas / SP / ndp / cdf / src / WCF / ServiceModel / System / ServiceModel / Security / SecurityChannel.cs / 1 / SecurityChannel.cs
//---------------------------------------------------------- // Copyright (c) Microsoft Corporation. All rights reserved. //----------------------------------------------------------- namespace System.ServiceModel.Security { using System.ServiceModel.Channels; abstract class SecurityChannel: LayeredChannel where TChannel : class, IChannel { SecurityProtocol securityProtocol; protected SecurityChannel(ChannelManagerBase channelManager, TChannel innerChannel) : this(channelManager, innerChannel, null) { } protected SecurityChannel(ChannelManagerBase channelManager, TChannel innerChannel, SecurityProtocol securityProtocol) : base(channelManager, innerChannel) { this.securityProtocol = securityProtocol; } public override T GetProperty () { if(typeof(T) == typeof(FaultConverter)) { return new SecurityChannelFaultConverter(this.InnerChannel) as T; } return base.GetProperty (); } public SecurityProtocol SecurityProtocol { get { return this.securityProtocol; } protected set { if (value == null) { throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new ArgumentNullException("value")); } this.securityProtocol = value; } } protected override void OnAbort() { if (this.securityProtocol != null) { this.securityProtocol.Close(true, TimeSpan.Zero); } base.OnAbort(); } protected override IAsyncResult OnBeginClose(TimeSpan timeout, AsyncCallback callback, object state) { return new ChainedAsyncResult(timeout, callback, state, this.BeginCloseSecurityProtocol, this.EndCloseSecurityProtocol, base.OnBeginClose, base.OnEndClose); } protected override void OnEndClose(IAsyncResult result) { ChainedAsyncResult.End(result); } IAsyncResult BeginCloseSecurityProtocol(TimeSpan timeout, AsyncCallback callback, object state) { if (this.securityProtocol != null) { return this.securityProtocol.BeginClose(timeout, callback, state); } else { return new NullSecurityProtocolCloseAsyncResult(callback, state); } } void EndCloseSecurityProtocol(IAsyncResult result) { if (result is NullSecurityProtocolCloseAsyncResult) { NullSecurityProtocolCloseAsyncResult.End(result); } else { this.securityProtocol.EndClose(result); } } protected override void OnClose(TimeSpan timeout) { TimeoutHelper timeoutHelper = new TimeoutHelper(timeout); if (this.securityProtocol != null) { this.securityProtocol.Close(false, timeoutHelper.RemainingTime()); } base.OnClose(timeoutHelper.RemainingTime()); } protected void ThrowIfDisposedOrNotOpen(Message message) { ThrowIfDisposedOrNotOpen(); if (message == null) { throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull("message"); } } class NullSecurityProtocolCloseAsyncResult : CompletedAsyncResult { public NullSecurityProtocolCloseAsyncResult(AsyncCallback callback, object state) : base(callback, state) { } new public static void End(IAsyncResult result) { AsyncResult.End (result); } } protected sealed class OutputChannelSendAsyncResult : ApplySecurityAndSendAsyncResult { public OutputChannelSendAsyncResult(Message message, SecurityProtocol binding, IOutputChannel channel, TimeSpan timeout, AsyncCallback callback, object state) : base(binding, channel, timeout, callback, state) { this.Begin(message, null); } protected override IAsyncResult BeginSendCore(IOutputChannel channel, Message message, TimeSpan timeout, AsyncCallback callback, object state) { return channel.BeginSend(message, timeout, callback, state); } internal static void End(IAsyncResult result) { OutputChannelSendAsyncResult self = result as OutputChannelSendAsyncResult; OnEnd(self); } protected override void EndSendCore(IOutputChannel channel, IAsyncResult result) { channel.EndSend(result); } protected override void OnSendCompleteCore(TimeSpan timeout) { } } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. // Copyright (c) Microsoft Corporation. All rights reserved.
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- XmlSchemaValidationException.cs
- COMException.cs
- UserControlFileEditor.cs
- MouseActionValueSerializer.cs
- BuilderPropertyEntry.cs
- VarRefManager.cs
- PropertyChangedEventArgs.cs
- TextMetrics.cs
- BaseCollection.cs
- CollectionTraceRecord.cs
- _LoggingObject.cs
- _ShellExpression.cs
- ExtenderControl.cs
- TreeView.cs
- RouteItem.cs
- SystemResourceHost.cs
- StrokeFIndices.cs
- DBParameter.cs
- SqlBinder.cs
- _NetworkingPerfCounters.cs
- PreviousTrackingServiceAttribute.cs
- CallbackDebugBehavior.cs
- ChtmlCommandAdapter.cs
- InstalledFontCollection.cs
- XmlILAnnotation.cs
- Bits.cs
- Converter.cs
- PrintPreviewControl.cs
- EventSinkHelperWriter.cs
- ReadOnlyCollectionBase.cs
- PreviewPrintController.cs
- CodeSnippetStatement.cs
- FixedTextPointer.cs
- FileSystemEnumerable.cs
- Baml2006SchemaContext.cs
- Module.cs
- SchemaConstraints.cs
- OracleCommand.cs
- Peer.cs
- CompressStream.cs
- WindowsAuthenticationModule.cs
- _NetRes.cs
- RangeValidator.cs
- DetailsViewModeEventArgs.cs
- ToolStripSettings.cs
- UnsafeNativeMethodsPenimc.cs
- OnOperation.cs
- HtmlTernaryTree.cs
- DispatchProxy.cs
- DataGridViewSelectedCellsAccessibleObject.cs
- SafeNativeMethodsMilCoreApi.cs
- FullTrustAssembliesSection.cs
- NativeMethodsOther.cs
- ContainerParaClient.cs
- FormsAuthenticationCredentials.cs
- PropertyCollection.cs
- RecommendedAsConfigurableAttribute.cs
- BufferedReceiveManager.cs
- HtmlInputReset.cs
- x509utils.cs
- RequestSecurityTokenResponse.cs
- StylusLogic.cs
- SizeAnimationClockResource.cs
- HandlerFactoryCache.cs
- FactoryId.cs
- EndpointAddressAugust2004.cs
- ValidatedControlConverter.cs
- FunctionNode.cs
- Crc32Helper.cs
- SqlOuterApplyReducer.cs
- InheritanceRules.cs
- QueryRewriter.cs
- PartBasedPackageProperties.cs
- Interlocked.cs
- ObjectFactoryCodeDomTreeGenerator.cs
- Int64.cs
- ColorInterpolationModeValidation.cs
- Switch.cs
- InvalidProgramException.cs
- Control.cs
- NumberSubstitution.cs
- ContentPosition.cs
- DataKey.cs
- ExpressionQuoter.cs
- ObjectQueryState.cs
- FormsAuthentication.cs
- DriveNotFoundException.cs
- XmlSchemaInferenceException.cs
- GlobalizationSection.cs
- UIElementParaClient.cs
- RunWorkerCompletedEventArgs.cs
- CTreeGenerator.cs
- SchemaObjectWriter.cs
- RotateTransform.cs
- Error.cs
- DataGridViewDataErrorEventArgs.cs
- QueryOptionExpression.cs
- JournalEntryListConverter.cs
- WindowsTitleBar.cs
- LicenseManager.cs