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
- XMLSyntaxException.cs
- SafeWaitHandle.cs
- Figure.cs
- XmlSchemaSimpleType.cs
- CounterCreationDataCollection.cs
- Exceptions.cs
- ObjectToIdCache.cs
- SerializationInfo.cs
- CharStorage.cs
- MatrixStack.cs
- SecurityKeyType.cs
- DesignParameter.cs
- CircleHotSpot.cs
- SafeHandle.cs
- GradientStopCollection.cs
- WebPartsPersonalization.cs
- SynchronizedInputPattern.cs
- DeploymentSection.cs
- ValueTypeFixupInfo.cs
- FixedPageAutomationPeer.cs
- DictionaryEntry.cs
- HostingEnvironmentSection.cs
- EditorZone.cs
- PenContext.cs
- EntityDataSourceSelectingEventArgs.cs
- RoleGroupCollectionEditor.cs
- ComponentCollection.cs
- SrgsGrammarCompiler.cs
- TimeIntervalCollection.cs
- CapabilitiesSection.cs
- CompiledXpathExpr.cs
- RepeatButtonAutomationPeer.cs
- ServiceOperationParameter.cs
- GeneralTransform3DGroup.cs
- UpdateRecord.cs
- Memoizer.cs
- SqlTrackingWorkflowInstance.cs
- ExtensionElement.cs
- DbConnectionOptions.cs
- CodeMemberMethod.cs
- FixedDocumentPaginator.cs
- EmptyImpersonationContext.cs
- HMACSHA1.cs
- XmlnsDefinitionAttribute.cs
- FieldBuilder.cs
- DataObjectAttribute.cs
- Memoizer.cs
- KeyboardDevice.cs
- CharEnumerator.cs
- PreloadHost.cs
- HasCopySemanticsAttribute.cs
- ColorInterpolationModeValidation.cs
- HtmlInputText.cs
- SemanticValue.cs
- Array.cs
- Base64Stream.cs
- CommonRemoteMemoryBlock.cs
- Int32AnimationUsingKeyFrames.cs
- columnmapkeybuilder.cs
- ObjectReaderCompiler.cs
- RoleBoolean.cs
- UiaCoreApi.cs
- WorkflowCreationContext.cs
- KeyedQueue.cs
- MachineKeyConverter.cs
- XmlEventCache.cs
- TreeNodeClickEventArgs.cs
- LoginCancelEventArgs.cs
- RectangleGeometry.cs
- ChannelManager.cs
- GenericEnumerator.cs
- DocumentApplicationJournalEntry.cs
- KeySpline.cs
- ComponentEditorForm.cs
- EncryptedKey.cs
- StringKeyFrameCollection.cs
- SimpleBitVector32.cs
- LongSumAggregationOperator.cs
- ListViewContainer.cs
- HtmlInputText.cs
- PermissionToken.cs
- Constraint.cs
- PolicyLevel.cs
- DeleteWorkflowOwnerCommand.cs
- UpdateProgress.cs
- mediaeventargs.cs
- WebPartChrome.cs
- DrawingState.cs
- BaseTemplateBuildProvider.cs
- ICspAsymmetricAlgorithm.cs
- FixedPage.cs
- AsymmetricAlgorithm.cs
- CopyOnWriteList.cs
- XmlEntity.cs
- CheckBoxField.cs
- BitmapEffectInputConnector.cs
- DataGridColumnHeaderAutomationPeer.cs
- XmlSerializationReader.cs
- BaseDataBoundControl.cs
- Composition.cs