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
- DockPattern.cs
- XmlSchemaInfo.cs
- FontUnitConverter.cs
- ToolStripGrip.cs
- CodeThrowExceptionStatement.cs
- SystemFonts.cs
- ObjectTypeMapping.cs
- XmlBaseReader.cs
- PolicyManager.cs
- ZipIOFileItemStream.cs
- ReaderWriterLock.cs
- MatrixTransform3D.cs
- SqlDataRecord.cs
- WebUtil.cs
- Double.cs
- documentsequencetextpointer.cs
- XmlTextReaderImpl.cs
- PropertyEmitterBase.cs
- Matrix.cs
- linebase.cs
- EncodingNLS.cs
- Qualifier.cs
- AsyncOperation.cs
- PageCodeDomTreeGenerator.cs
- FrugalList.cs
- FontSource.cs
- LoginName.cs
- SchemaImporterExtensionsSection.cs
- TaskFormBase.cs
- JoinCqlBlock.cs
- InkCanvasSelection.cs
- KeyValuePairs.cs
- CoTaskMemUnicodeSafeHandle.cs
- MarkupCompiler.cs
- HttpServerVarsCollection.cs
- RoleManagerModule.cs
- SpStreamWrapper.cs
- EmissiveMaterial.cs
- GACMembershipCondition.cs
- LinkLabelLinkClickedEvent.cs
- PropertyKey.cs
- StateMachineAction.cs
- CornerRadius.cs
- FontConverter.cs
- RoleGroupCollection.cs
- DataBindingValueUIHandler.cs
- OdbcCommandBuilder.cs
- GenerateTemporaryAssemblyTask.cs
- FocusTracker.cs
- ExtensibleClassFactory.cs
- XmlAnyAttributeAttribute.cs
- ThreadLocal.cs
- StringAnimationUsingKeyFrames.cs
- ParallelTimeline.cs
- ChtmlCalendarAdapter.cs
- StyleBamlTreeBuilder.cs
- DeviceContexts.cs
- SqlCaseSimplifier.cs
- MetabaseSettingsIis7.cs
- COM2PictureConverter.cs
- COM2IDispatchConverter.cs
- DefaultHttpHandler.cs
- BindingsCollection.cs
- EnumValAlphaComparer.cs
- _ContextAwareResult.cs
- XmlEntityReference.cs
- Funcletizer.cs
- EncoderParameter.cs
- TraceUtils.cs
- XmlDocument.cs
- IisTraceWebEventProvider.cs
- RegisteredExpandoAttribute.cs
- Brushes.cs
- EntityTemplateUserControl.cs
- CaseInsensitiveComparer.cs
- DataSourceProvider.cs
- MissingMemberException.cs
- HexParser.cs
- RSAPKCS1KeyExchangeFormatter.cs
- DataServices.cs
- MemberInfoSerializationHolder.cs
- SafePEFileHandle.cs
- PixelShader.cs
- DesignParameter.cs
- xml.cs
- XmlElementList.cs
- ArraySubsetEnumerator.cs
- XmlLinkedNode.cs
- HebrewNumber.cs
- DataGridrowEditEndingEventArgs.cs
- TypedRowGenerator.cs
- TemplateControlBuildProvider.cs
- PageParserFilter.cs
- DbConnectionStringCommon.cs
- GroupByExpressionRewriter.cs
- InitialServerConnectionReader.cs
- PauseStoryboard.cs
- RIPEMD160.cs
- ZoneLinkButton.cs
- MetabaseServerConfig.cs