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
- PersonalizationProviderHelper.cs
- Thickness.cs
- OracleBinary.cs
- FormParameter.cs
- NativeMethods.cs
- IconHelper.cs
- SharedTcpTransportManager.cs
- ExpressionReplacer.cs
- XmlSerializerSection.cs
- BamlLocalizabilityResolver.cs
- Compiler.cs
- RandomDelaySendsAsyncResult.cs
- ErrorHandler.cs
- ForeignConstraint.cs
- MissingManifestResourceException.cs
- BuilderPropertyEntry.cs
- StructuredProperty.cs
- TransactionFlowOption.cs
- CompareInfo.cs
- TextDecoration.cs
- OdbcConnectionFactory.cs
- SQLSingle.cs
- WindowsEditBoxRange.cs
- WebInvokeAttribute.cs
- StringKeyFrameCollection.cs
- TableLayoutSettingsTypeConverter.cs
- GeometryDrawing.cs
- CollectionType.cs
- AnimationException.cs
- TreeBuilderBamlTranslator.cs
- RectKeyFrameCollection.cs
- Selector.cs
- ReferenceConverter.cs
- ListBoxItemAutomationPeer.cs
- TextFormatter.cs
- BaseInfoTable.cs
- SqlConnectionString.cs
- ToolboxDataAttribute.cs
- PostBackTrigger.cs
- TypeEnumerableViewSchema.cs
- DataGridViewTopRowAccessibleObject.cs
- Style.cs
- StructuredTypeEmitter.cs
- WindowsHyperlink.cs
- HtmlTitle.cs
- DBPropSet.cs
- FigureParagraph.cs
- behaviorssection.cs
- EdmScalarPropertyAttribute.cs
- AmbientLight.cs
- CompiledQueryCacheEntry.cs
- QueryCorrelationInitializer.cs
- ProfilePropertySettings.cs
- TransformPattern.cs
- GroupQuery.cs
- DbgUtil.cs
- IdentityReference.cs
- UnsafeNativeMethods.cs
- HintTextMaxWidthConverter.cs
- XmlSerializationGeneratedCode.cs
- SqlSupersetValidator.cs
- ToolBarTray.cs
- BlobPersonalizationState.cs
- XmlSchemaIdentityConstraint.cs
- PackagingUtilities.cs
- StylusEditingBehavior.cs
- SqlGenericUtil.cs
- URLAttribute.cs
- AssemblyInfo.cs
- BindingList.cs
- XmlComment.cs
- NavigationPropertyEmitter.cs
- TypeSource.cs
- PagedDataSource.cs
- ZipPackagePart.cs
- VariantWrapper.cs
- StatusStrip.cs
- FlowDocumentPaginator.cs
- ScriptReference.cs
- WebConfigurationHost.cs
- EventData.cs
- SimpleBitVector32.cs
- DataBinder.cs
- CompatibleComparer.cs
- RoleManagerEventArgs.cs
- UpdatePanelTrigger.cs
- X509Certificate2.cs
- ImageFormatConverter.cs
- XsltInput.cs
- ConfigurationSchemaErrors.cs
- PropertyMapper.cs
- SourceFilter.cs
- SqlNotificationRequest.cs
- IsolationInterop.cs
- DependencyPropertyKey.cs
- ControlUtil.cs
- Quaternion.cs
- COM2ExtendedTypeConverter.cs
- Privilege.cs
- EdmProviderManifest.cs