Code:
/ WCF / WCF / 3.5.30729.1 / untmp / Orcas / SP / ndp / cdf / src / WCF / TransactionBridge / Microsoft / Transactions / Wsat / Messaging / SupportingTokenListenerFactory.cs / 1 / SupportingTokenListenerFactory.cs
//------------------------------------------------------------------------------
// Copyright (c) Microsoft Corporation. All rights reserved.
//-----------------------------------------------------------------------------
// Defines the SupportingTokenListenerFactory, which contributes a SupportingTokenListener
using System;
using System.Diagnostics;
using System.ServiceModel;
using System.ServiceModel.Channels;
using System.ServiceModel.Security;
using Microsoft.Transactions.Wsat.Protocol;
namespace Microsoft.Transactions.Wsat.Messaging
{
class SupportingTokenChannelListener : LayeredChannelListener
where TChannel : class, IChannel
{
IChannelListener innerChannelListener;
SupportingTokenSecurityTokenResolver tokenResolver;
ProtocolVersion protocolVersion;
public SupportingTokenChannelListener(SupportingTokenBindingElement bindingElement,
BindingContext context,
SupportingTokenSecurityTokenResolver tokenResolver)
:
base(context.Binding, context.BuildInnerChannelListener())
{
this.protocolVersion= bindingElement.ProtocolVersion;
this.tokenResolver = tokenResolver;
}
public ProtocolVersion ProtocolVersion
{
get { return this.protocolVersion; }
}
protected override void OnOpening()
{
base.OnOpening();
this.innerChannelListener = (IChannelListener)(object)this.InnerChannelListener;
}
protected override TChannel OnAcceptChannel(TimeSpan timeout)
{
TChannel innerChannel = this.innerChannelListener.AcceptChannel(timeout);
if (innerChannel == null)
return null;
return WrapChannel(innerChannel);
}
protected override IAsyncResult OnBeginAcceptChannel(TimeSpan timeout, AsyncCallback callback, object state)
{
return this.innerChannelListener.BeginAcceptChannel(timeout, callback, state);
}
protected override TChannel OnEndAcceptChannel(IAsyncResult result)
{
TChannel innerChannel = this.innerChannelListener.EndAcceptChannel(result);
if (innerChannel == null)
return null;
return WrapChannel(innerChannel);
}
protected override bool OnWaitForChannel(TimeSpan timeout)
{
return this.innerChannelListener.WaitForChannel(timeout);
}
protected override IAsyncResult OnBeginWaitForChannel(TimeSpan timeout, AsyncCallback callback, object state)
{
return this.innerChannelListener.BeginWaitForChannel(timeout, callback, state);
}
protected override bool OnEndWaitForChannel(IAsyncResult result)
{
return this.innerChannelListener.EndWaitForChannel(result);
}
TChannel WrapChannel(TChannel innerChannel)
{
if (DebugTrace.Verbose)
{
DebugTrace.Trace(TraceLevel.Verbose,
"Creating new SupportingTokenChannel<{0}>",
typeof(TChannel).Name);
}
if (typeof(TChannel) == typeof(IDuplexChannel))
{
return (TChannel)(object)new SupportingTokenDuplexChannel(this,
(IDuplexChannel)innerChannel,
this.tokenResolver,
this.protocolVersion);
}
else
{
// The listener supports a fixed set of channel types. The function
// itself is internal. If the listener is asked to support a channel
// type that the application does not recognize, that is automatically
// a bug that needs to be reported back to Microsoft.
DiagnosticUtility.FailFast("SupportingTokenListener does not support " + typeof(TChannel).Name);
return null; // Keep the compiler happy
}
}
}
}
// 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
- HashRepartitionStream.cs
- XmlSchemaComplexContent.cs
- WebScriptMetadataMessageEncoderFactory.cs
- DockPanel.cs
- PerfProviderCollection.cs
- FrugalList.cs
- SourceLineInfo.cs
- SqlGatherProducedAliases.cs
- PTConverter.cs
- InboundActivityHelper.cs
- ThreadAttributes.cs
- TypefaceMetricsCache.cs
- Avt.cs
- RowVisual.cs
- ConfigXmlText.cs
- DeadCharTextComposition.cs
- DataTableClearEvent.cs
- FontSource.cs
- PolygonHotSpot.cs
- AudioFormatConverter.cs
- RadioButtonRenderer.cs
- TextLine.cs
- XmlAnyElementAttributes.cs
- DynamicPropertyHolder.cs
- MappingModelBuildProvider.cs
- CodeTypeReference.cs
- ConnectionPoint.cs
- ObjectHandle.cs
- RemoteWebConfigurationHostServer.cs
- DbDataReader.cs
- EpmSyndicationContentSerializer.cs
- X509RecipientCertificateClientElement.cs
- ToolStripProfessionalLowResolutionRenderer.cs
- HandlerMappingMemo.cs
- _AutoWebProxyScriptHelper.cs
- ColorConverter.cs
- SetterBaseCollection.cs
- MemberProjectedSlot.cs
- Codec.cs
- ExtendedPropertyDescriptor.cs
- ListControl.cs
- backend.cs
- ClrPerspective.cs
- PrintPreviewGraphics.cs
- DataError.cs
- WebPartConnectVerb.cs
- EmissiveMaterial.cs
- ComponentChangingEvent.cs
- HelpFileFileNameEditor.cs
- sortedlist.cs
- RegistryKey.cs
- ClientSponsor.cs
- PixelFormats.cs
- XmlArrayAttribute.cs
- FirstMatchCodeGroup.cs
- Menu.cs
- ListViewEditEventArgs.cs
- TextBox.cs
- NameSpaceExtractor.cs
- StaticExtension.cs
- DataGridViewTextBoxColumn.cs
- StreamUpdate.cs
- OleDbDataAdapter.cs
- CompositeActivityTypeDescriptor.cs
- SearchForVirtualItemEventArgs.cs
- XmlDictionaryReader.cs
- FileFormatException.cs
- RtfToXamlReader.cs
- Queue.cs
- ContentPropertyAttribute.cs
- SkipQueryOptionExpression.cs
- KeyTime.cs
- RouteItem.cs
- MenuItemBindingCollection.cs
- HashFinalRequest.cs
- handlecollector.cs
- ServiceModelStringsVersion1.cs
- X509SecurityToken.cs
- WebPartConnectVerb.cs
- PrivilegeNotHeldException.cs
- SecurityKeyUsage.cs
- Mutex.cs
- LoginCancelEventArgs.cs
- NavigationProgressEventArgs.cs
- FileUtil.cs
- CodeVariableDeclarationStatement.cs
- Win32PrintDialog.cs
- PreApplicationStartMethodAttribute.cs
- WizardStepBase.cs
- DesignerForm.cs
- RuntimeDelegateArgument.cs
- ConfigurationManagerHelper.cs
- IndentTextWriter.cs
- ContextMenu.cs
- ReaderWriterLock.cs
- FlowDocumentPageViewerAutomationPeer.cs
- safex509handles.cs
- CodeTypeReferenceCollection.cs
- EntityDataSourceQueryBuilder.cs
- PathNode.cs