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
- WinFormsSpinner.cs
- SmiSettersStream.cs
- SerializationException.cs
- ObjectItemCollection.cs
- DataTableCollection.cs
- DrawingServices.cs
- DirectoryObjectSecurity.cs
- ExtenderProvidedPropertyAttribute.cs
- SqlNodeAnnotations.cs
- FixedSOMElement.cs
- TypedLocationWrapper.cs
- ServiceNameCollection.cs
- UnicodeEncoding.cs
- DataControlButton.cs
- TextBlockAutomationPeer.cs
- StylusButtonEventArgs.cs
- ISO2022Encoding.cs
- SimpleTableProvider.cs
- Utils.cs
- CatalogPartCollection.cs
- XmlCDATASection.cs
- DateTimeConstantAttribute.cs
- ByteRangeDownloader.cs
- HandledMouseEvent.cs
- RedirectionProxy.cs
- CommandConverter.cs
- MouseEventArgs.cs
- ReachSerializerAsync.cs
- OlePropertyStructs.cs
- LoadedOrUnloadedOperation.cs
- MarshalByRefObject.cs
- BindingOperations.cs
- MenuItem.cs
- WebEventTraceProvider.cs
- ActivityWithResultValueSerializer.cs
- Pen.cs
- WebPartExportVerb.cs
- ZipIOLocalFileHeader.cs
- TdsParserSafeHandles.cs
- XPathAncestorQuery.cs
- DocobjHost.cs
- XslAstAnalyzer.cs
- SchemaElementDecl.cs
- ButtonFieldBase.cs
- EdmToObjectNamespaceMap.cs
- ColumnCollection.cs
- SafeSystemMetrics.cs
- BaseParaClient.cs
- Rect3D.cs
- CodeFieldReferenceExpression.cs
- UTF32Encoding.cs
- ToolStripItemBehavior.cs
- MonthChangedEventArgs.cs
- CodeExporter.cs
- PointCollection.cs
- PointHitTestParameters.cs
- ComEventsInfo.cs
- HtmlFormWrapper.cs
- GlyphsSerializer.cs
- DataTableNewRowEvent.cs
- X509WindowsSecurityToken.cs
- PageTheme.cs
- BinaryUtilClasses.cs
- DashStyle.cs
- PropertyStore.cs
- GeneralTransformGroup.cs
- autovalidator.cs
- TypedTableGenerator.cs
- HtmlElement.cs
- RootBrowserWindowProxy.cs
- TypeConverterHelper.cs
- XsdCachingReader.cs
- EditBehavior.cs
- MustUnderstandSoapException.cs
- TextElement.cs
- BoundsDrawingContextWalker.cs
- HtmlTableRowCollection.cs
- TimelineGroup.cs
- LookupNode.cs
- OrderingExpression.cs
- TileBrush.cs
- MetaModel.cs
- MessageSecurityVersionConverter.cs
- FormatterConverter.cs
- StylusPointPropertyUnit.cs
- TableLayoutSettingsTypeConverter.cs
- NavigationService.cs
- DefaultTraceListener.cs
- ProfileService.cs
- selecteditemcollection.cs
- elementinformation.cs
- HScrollBar.cs
- DockAndAnchorLayout.cs
- ProgressBar.cs
- XmlEntity.cs
- Collection.cs
- StreamInfo.cs
- TokenizerHelper.cs
- VisualStates.cs
- SchemaImporterExtension.cs