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
- HandledMouseEvent.cs
- CustomWebEventKey.cs
- TemplateParser.cs
- FreeFormPanel.cs
- LayoutEditorPart.cs
- Scheduler.cs
- DataGridViewRowsRemovedEventArgs.cs
- MutexSecurity.cs
- OdbcDataAdapter.cs
- LingerOption.cs
- WinInet.cs
- AssemblyResourceLoader.cs
- MatrixConverter.cs
- sqlnorm.cs
- ZipIOBlockManager.cs
- JsonGlobals.cs
- PortCache.cs
- GridLength.cs
- RequiredFieldValidator.cs
- SequentialOutput.cs
- RemoveStoryboard.cs
- WinEventHandler.cs
- TemplateBindingExpression.cs
- RestHandlerFactory.cs
- XsltArgumentList.cs
- X509CertificateChain.cs
- IPEndPoint.cs
- X509LogoTypeExtension.cs
- WindowsStatic.cs
- DataKey.cs
- XmlSerializerAssemblyAttribute.cs
- CompiledIdentityConstraint.cs
- RijndaelManagedTransform.cs
- WeakEventTable.cs
- UserMapPath.cs
- ControlCollection.cs
- WebPartConnectionsEventArgs.cs
- login.cs
- CellIdBoolean.cs
- TempEnvironment.cs
- BasicHttpMessageSecurity.cs
- WindowsComboBox.cs
- COM2ICategorizePropertiesHandler.cs
- Menu.cs
- FontEditor.cs
- WebPartEditorCancelVerb.cs
- VisualStyleRenderer.cs
- SyndicationSerializer.cs
- CodeSnippetTypeMember.cs
- VariableDesigner.xaml.cs
- HashHelper.cs
- DataBoundControl.cs
- LayoutTableCell.cs
- ValueUtilsSmi.cs
- MouseGestureConverter.cs
- CellRelation.cs
- DataSourceCache.cs
- DataServiceOperationContext.cs
- ResourcePart.cs
- FormViewDeleteEventArgs.cs
- NavigationExpr.cs
- DelegatedStream.cs
- SubclassTypeValidatorAttribute.cs
- EmptyEnumerator.cs
- PropertyDescriptors.cs
- CodeCompiler.cs
- Parallel.cs
- AddInSegmentDirectoryNotFoundException.cs
- DelimitedListTraceListener.cs
- DSGeneratorProblem.cs
- PathGeometry.cs
- DirectionalLight.cs
- ByteAnimationBase.cs
- SqlCacheDependencyDatabaseCollection.cs
- NativeWindow.cs
- BuildProviderAppliesToAttribute.cs
- HeaderedContentControl.cs
- CodeDOMProvider.cs
- BufferedWebEventProvider.cs
- CodeTypeDeclaration.cs
- DefaultObjectMappingItemCollection.cs
- DefaultAutoFieldGenerator.cs
- CustomAttributeBuilder.cs
- RectValueSerializer.cs
- SQLMoney.cs
- DelayedRegex.cs
- __TransparentProxy.cs
- DragDeltaEventArgs.cs
- Visual.cs
- ThreadStateException.cs
- LoginViewDesigner.cs
- AmbiguousMatchException.cs
- CornerRadius.cs
- StylusTouchDevice.cs
- CookieProtection.cs
- ParameterInfo.cs
- NonClientArea.cs
- AutoCompleteStringCollection.cs
- EffectiveValueEntry.cs
- HttpHandler.cs