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
- DisableDpiAwarenessAttribute.cs
- SortQuery.cs
- HtmlTableRowCollection.cs
- TypeContext.cs
- ClientBuildManager.cs
- ExpressionParser.cs
- SharedPersonalizationStateInfo.cs
- TextServicesHost.cs
- WindowAutomationPeer.cs
- WebPart.cs
- ThemeConfigurationDialog.cs
- XmlAttributeAttribute.cs
- BinHexDecoder.cs
- AuthenticatedStream.cs
- TreeViewCancelEvent.cs
- ImageField.cs
- WebException.cs
- XmlAttributeHolder.cs
- NullableDoubleMinMaxAggregationOperator.cs
- ObjectStorage.cs
- WindowsGrip.cs
- Main.cs
- SystemInfo.cs
- ForwardPositionQuery.cs
- SqlMultiplexer.cs
- DbConnectionPoolGroup.cs
- Screen.cs
- sqlpipe.cs
- DefaultEvaluationContext.cs
- XmlSchemaAny.cs
- RtType.cs
- WebPartVerbCollection.cs
- PersonalizationDictionary.cs
- PeerNameRecordCollection.cs
- ListBindableAttribute.cs
- SmiEventSink_Default.cs
- StylusSystemGestureEventArgs.cs
- XmlElementList.cs
- MessageBox.cs
- TemplateBaseAction.cs
- OptimizedTemplateContentHelper.cs
- webbrowsersite.cs
- RotationValidation.cs
- GeometryHitTestParameters.cs
- BuiltInPermissionSets.cs
- SqlRetyper.cs
- EpmTargetPathSegment.cs
- AccessKeyManager.cs
- EventHandlersStore.cs
- ClientConfigurationHost.cs
- XmlElementElementCollection.cs
- SetStoryboardSpeedRatio.cs
- Inflater.cs
- Matrix3D.cs
- FolderNameEditor.cs
- BitmapFrame.cs
- XPathDocument.cs
- RecordsAffectedEventArgs.cs
- EntityContainerRelationshipSetEnd.cs
- PropertyConverter.cs
- HighlightComponent.cs
- ChannelToken.cs
- PasswordPropertyTextAttribute.cs
- RSAOAEPKeyExchangeFormatter.cs
- OverflowException.cs
- ActivityCollectionMarkupSerializer.cs
- QilFactory.cs
- WindowsListViewSubItem.cs
- PropertyNames.cs
- DelayDesigner.cs
- AccessDataSource.cs
- StrokeFIndices.cs
- BindingRestrictions.cs
- DataGridViewDataConnection.cs
- DefaultEventAttribute.cs
- PageAction.cs
- Console.cs
- DeclarativeCatalogPart.cs
- TextDecorationLocationValidation.cs
- DependencyPropertyKey.cs
- Logging.cs
- Component.cs
- SoapAttributeAttribute.cs
- CollaborationHelperFunctions.cs
- PropertyIDSet.cs
- ChameleonKey.cs
- ImageFormat.cs
- BehaviorEditorPart.cs
- CodeTypeParameterCollection.cs
- DtrList.cs
- SqlNodeAnnotations.cs
- ProxyHwnd.cs
- KerberosTicketHashIdentifierClause.cs
- DBParameter.cs
- LinkArea.cs
- TextStore.cs
- RenderDataDrawingContext.cs
- TrustLevelCollection.cs
- ToolZoneDesigner.cs
- HttpHostedTransportConfiguration.cs