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
- WorkflowMarkupSerializationProvider.cs
- AudioSignalProblemOccurredEventArgs.cs
- CodeLabeledStatement.cs
- DataSetViewSchema.cs
- FontFamilyIdentifier.cs
- TcpChannelFactory.cs
- DynamicRenderer.cs
- AxHost.cs
- grammarelement.cs
- ApplicationDirectoryMembershipCondition.cs
- AttributeProviderAttribute.cs
- EventSinkHelperWriter.cs
- ConfigXmlElement.cs
- HyperLinkField.cs
- WindowsRichEditRange.cs
- PublisherIdentityPermission.cs
- httpstaticobjectscollection.cs
- Select.cs
- GenericAuthenticationEventArgs.cs
- RegexStringValidator.cs
- JoinGraph.cs
- PixelFormatConverter.cs
- EventLogHandle.cs
- VectorAnimation.cs
- WebServicesDescriptionAttribute.cs
- counter.cs
- AudienceUriMode.cs
- UniqueIdentifierService.cs
- ObjectCloneHelper.cs
- UnmanagedMarshal.cs
- configsystem.cs
- DataGridViewControlCollection.cs
- _Events.cs
- InputScopeManager.cs
- MediaElementAutomationPeer.cs
- UpDownBase.cs
- ShutDownListener.cs
- WebSysDisplayNameAttribute.cs
- CodeObjectCreateExpression.cs
- ClientSettingsStore.cs
- SwitchElementsCollection.cs
- SizeAnimationBase.cs
- DataGridViewBindingCompleteEventArgs.cs
- QueuePropertyVariants.cs
- CustomAttributeSerializer.cs
- SatelliteContractVersionAttribute.cs
- PreProcessInputEventArgs.cs
- QueryableFilterUserControl.cs
- DbProviderFactory.cs
- SessionEndingCancelEventArgs.cs
- SqlDataAdapter.cs
- DPTypeDescriptorContext.cs
- ByteConverter.cs
- PartialCachingControl.cs
- CodeVariableReferenceExpression.cs
- DesignerForm.cs
- CompositeCollection.cs
- ParameterElementCollection.cs
- WebBrowserNavigatingEventHandler.cs
- WebResourceAttribute.cs
- WinFormsUtils.cs
- CodeSnippetCompileUnit.cs
- ItemsControlAutomationPeer.cs
- EventLogSession.cs
- CompilerTypeWithParams.cs
- FormClosedEvent.cs
- TypedElement.cs
- VirtualDirectoryMappingCollection.cs
- CompleteWizardStep.cs
- SystemKeyConverter.cs
- LayoutTableCell.cs
- AccessibilityHelperForXpWin2k3.cs
- MatchingStyle.cs
- SingleAnimation.cs
- KeyInfo.cs
- TextPointerBase.cs
- ActivityMarkupSerializer.cs
- WebHeaderCollection.cs
- Policy.cs
- mediaeventargs.cs
- Imaging.cs
- FontWeight.cs
- ReflectionTypeLoadException.cs
- EmbeddedMailObjectsCollection.cs
- Stroke.cs
- DispatchChannelSink.cs
- _FixedSizeReader.cs
- XhtmlBasicTextViewAdapter.cs
- BuildManagerHost.cs
- HtmlElementCollection.cs
- RegistrySecurity.cs
- Zone.cs
- PackagePart.cs
- EventLogEntryCollection.cs
- PageEventArgs.cs
- SecurityTokenTypes.cs
- _NestedSingleAsyncResult.cs
- XmlDataContract.cs
- PasswordTextContainer.cs
- MenuStrip.cs