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
- Process.cs
- InputLanguageProfileNotifySink.cs
- WebServiceClientProxyGenerator.cs
- StateInitialization.cs
- WorkBatch.cs
- XmlDataSourceNodeDescriptor.cs
- TaskExceptionHolder.cs
- FrameworkName.cs
- smtpconnection.cs
- EntityProviderFactory.cs
- CommandCollectionEditor.cs
- OciLobLocator.cs
- LinqExpressionNormalizer.cs
- DependentTransaction.cs
- Win32.cs
- DebugHandleTracker.cs
- TypeRefElement.cs
- _DisconnectOverlappedAsyncResult.cs
- Pair.cs
- PopupRootAutomationPeer.cs
- FileSecurity.cs
- As.cs
- StatusInfoItem.cs
- DataGridViewCellCollection.cs
- VirtualPathProvider.cs
- DesignerDataRelationship.cs
- QilName.cs
- ChangeDirector.cs
- Set.cs
- CodeCatchClause.cs
- ServiceObjectContainer.cs
- HijriCalendar.cs
- DocumentSequence.cs
- HasCopySemanticsAttribute.cs
- FontStretch.cs
- IntegerValidatorAttribute.cs
- diagnosticsswitches.cs
- PopupEventArgs.cs
- DbProviderFactories.cs
- WebPartConnection.cs
- ProviderBase.cs
- IdleTimeoutMonitor.cs
- VisualState.cs
- ImportCatalogPart.cs
- COM2Enum.cs
- StrongName.cs
- sqlser.cs
- SimplePropertyEntry.cs
- XmlAnyElementAttributes.cs
- InputBinding.cs
- ScrollBarRenderer.cs
- EntityDataSourceEntityTypeFilterItem.cs
- MetadataItemEmitter.cs
- ResXResourceWriter.cs
- Tuple.cs
- UnconditionalPolicy.cs
- LiteralControl.cs
- TabRenderer.cs
- ScrollViewer.cs
- ValidationSummary.cs
- StreamSecurityUpgradeAcceptorAsyncResult.cs
- ConnectionManagementElementCollection.cs
- WSSecurityOneDotZeroSendSecurityHeader.cs
- SortQueryOperator.cs
- DrawingCollection.cs
- VectorKeyFrameCollection.cs
- PerformanceCounterNameAttribute.cs
- SkewTransform.cs
- GenericTextProperties.cs
- DomainConstraint.cs
- WmlSelectionListAdapter.cs
- DesignerAdapterAttribute.cs
- _ListenerAsyncResult.cs
- DataGridCommandEventArgs.cs
- DesignSurfaceCollection.cs
- TransactionContextManager.cs
- LogReservationCollection.cs
- OneOfTypeConst.cs
- GeneralTransform3DTo2DTo3D.cs
- metrodevice.cs
- WebGetAttribute.cs
- XmlDataSourceNodeDescriptor.cs
- RTLAwareMessageBox.cs
- HtmlInputReset.cs
- SaveFileDialog.cs
- OpenFileDialog.cs
- PrimitiveCodeDomSerializer.cs
- DataTableMapping.cs
- NativeMethods.cs
- IpcChannel.cs
- ProcessThreadCollection.cs
- RelatedCurrencyManager.cs
- SchemaAttDef.cs
- CodeTypeReferenceExpression.cs
- QilGenerator.cs
- PersistenceTypeAttribute.cs
- ProxyWebPartManagerDesigner.cs
- DriveInfo.cs
- HtmlTableRowCollection.cs
- ClientConfigurationHost.cs