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
- Trigger.cs
- Accessible.cs
- HandlerFactoryCache.cs
- RayMeshGeometry3DHitTestResult.cs
- DataListItem.cs
- BitSet.cs
- EncodingInfo.cs
- Panel.cs
- TransformPatternIdentifiers.cs
- AnnotationAuthorChangedEventArgs.cs
- HtmlTernaryTree.cs
- UnmanagedHandle.cs
- DropSource.cs
- _NTAuthentication.cs
- ConfigurationStrings.cs
- SoapIgnoreAttribute.cs
- PaintEvent.cs
- ApplicationServiceManager.cs
- InvalidPrinterException.cs
- EdmError.cs
- RuntimeConfig.cs
- SortKey.cs
- HeaderUtility.cs
- arc.cs
- FixedSOMPageConstructor.cs
- ContextConfiguration.cs
- DataControlButton.cs
- AssemblyAttributes.cs
- StrongNameKeyPair.cs
- XmlnsCompatibleWithAttribute.cs
- DesignerOptionService.cs
- MemberListBinding.cs
- WsdlWriter.cs
- SurrogateChar.cs
- WsatProxy.cs
- FocusChangedEventArgs.cs
- CatalogPartCollection.cs
- UnaryExpression.cs
- ACE.cs
- PathTooLongException.cs
- GlyphCache.cs
- BitStack.cs
- KeyTime.cs
- CompoundFileDeflateTransform.cs
- WebPartMenu.cs
- SrgsItemList.cs
- SafeNativeMethods.cs
- ExpressionConverter.cs
- PrtCap_Builder.cs
- KeyEvent.cs
- DifferencingCollection.cs
- ObsoleteAttribute.cs
- MouseCaptureWithinProperty.cs
- PenCursorManager.cs
- EntitySqlQueryBuilder.cs
- QilVisitor.cs
- Opcode.cs
- codemethodreferenceexpression.cs
- DesignTimeType.cs
- HighlightComponent.cs
- SafeCryptoHandles.cs
- ProcessHostMapPath.cs
- LocalBuilder.cs
- latinshape.cs
- MetadataUtilsSmi.cs
- PreviousTrackingServiceAttribute.cs
- RadialGradientBrush.cs
- SplineKeyFrames.cs
- CalendarTable.cs
- SystemIPInterfaceStatistics.cs
- TreeNodeStyle.cs
- StateManagedCollection.cs
- Decimal.cs
- GridLength.cs
- CompareValidator.cs
- AssertFilter.cs
- Decoder.cs
- TableLayout.cs
- WebHttpSecurityModeHelper.cs
- ReaderOutput.cs
- DataTableNameHandler.cs
- ListViewItem.cs
- XmlSchemaNotation.cs
- RowBinding.cs
- ChangesetResponse.cs
- DispatcherExceptionEventArgs.cs
- CuspData.cs
- VarInfo.cs
- TraceLevelStore.cs
- XmlDataLoader.cs
- SafeProcessHandle.cs
- OdbcConnectionStringbuilder.cs
- Constants.cs
- Odbc32.cs
- DecoderFallback.cs
- IssuanceLicense.cs
- InstancePersistenceEvent.cs
- ProtectedConfiguration.cs
- LambdaExpression.cs
- SvcMapFileSerializer.cs