Code:
/ WCF / WCF / 3.5.30729.1 / untmp / Orcas / SP / ndp / cdf / src / WCF / TransactionBridge / Microsoft / Transactions / Wsat / Messaging / MessageDispatch.cs / 1 / MessageDispatch.cs
//------------------------------------------------------------------------------
// Copyright (c) Microsoft Corporation. All rights reserved.
//-----------------------------------------------------------------------------
// Implement generic reception of datagram and request messages
using System;
using System.ServiceModel.Channels;
using System.Diagnostics;
using System.ServiceModel;
using Microsoft.Transactions.Wsat.Protocol;
using DiagnosticUtility = Microsoft.Transactions.Bridge.DiagnosticUtility;
namespace Microsoft.Transactions.Wsat.Messaging
{
abstract class DatagramMessageDispatcher
{
ProtocolVersion protocolVersion;
protected DatagramMessageDispatcher(ProtocolVersion protocolVersion)
{
this.protocolVersion = protocolVersion;
}
protected abstract DatagramProxy CreateFaultProxy(EndpointAddress to);
protected void OnMessageException(Message message, CommunicationException exception)
{
DebugTrace.Trace (
TraceLevel.Warning,
"{0} - {1} reading datagram with action {2}: {3}",
this.GetType().Name, exception.GetType().Name, message.Headers.Action, exception.Message);
EndpointAddress sendTo = Library.GetFaultToHeader(message.Headers, this.protocolVersion);
if (sendTo == null)
{
DebugTrace.Trace (
TraceLevel.Warning,
"Ignoring invalid datagram - a fault-to header could not be obtained"
);
}
else
{
DatagramProxy proxy = null;
try
{
proxy = CreateFaultProxy(sendTo);
}
catch (CreateChannelFailureException e)
{
DiagnosticUtility.ExceptionUtility.TraceHandledException(e, TraceEventType.Warning);
DebugTrace.Trace (TraceLevel.Warning,
"Ignoring invalid datagram: {0}",
e.Message);
}
if (proxy != null)
{
try
{
IAsyncResult ar = proxy.BeginSendFault (message.Headers.MessageId,
Faults.Version(this.protocolVersion).InvalidParameters, null, null);
proxy.EndSendMessage (ar);
if (DebugTrace.Warning)
{
DebugTrace.Trace (
TraceLevel.Warning,
"Sent InvalidParameters fault to {0}",
proxy.To.Uri
);
}
}
catch (WsatSendFailureException e)
{
DiagnosticUtility.ExceptionUtility.TraceHandledException(e, TraceEventType.Warning);
if (DebugTrace.Warning)
{
DebugTrace.Trace (
TraceLevel.Warning,
"{0} sending InvalidParameters fault to {1}: {2}",
e.GetType().Name, proxy.To.Uri, e.Message);
}
}
finally
{
proxy.Release();
}
}
}
}
}
abstract class RequestMessageDispatcher
{
protected abstract void SendFaultReply (RequestAsyncResult result, Fault fault);
protected void OnMessageException (RequestAsyncResult result, Message message, CommunicationException exception, Fault fault)
{
DebugTrace.Trace (
TraceLevel.Warning,
"{0} - {1} reading request with action {2}: {3}",
this.GetType().Name, exception.GetType().Name, message.Headers.Action, exception.Message);
SendFaultReply (result, fault);
DebugTrace.Trace (TraceLevel.Warning, "Replied with {0} fault", fault.Code.Name);
}
}
}
// 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
- SizeLimitedCache.cs
- Calendar.cs
- WebDescriptionAttribute.cs
- InkCanvasSelection.cs
- X509Certificate.cs
- XmlRawWriter.cs
- ColorConvertedBitmapExtension.cs
- ToolboxItem.cs
- SystemPens.cs
- WebServiceBindingAttribute.cs
- ColumnResult.cs
- EntityConnectionStringBuilder.cs
- BindingsSection.cs
- BuildResultCache.cs
- Matrix3D.cs
- DocumentsTrace.cs
- HttpContextWrapper.cs
- UIElementParagraph.cs
- SafeArrayTypeMismatchException.cs
- RoutedEventHandlerInfo.cs
- CompleteWizardStep.cs
- TextBoxRenderer.cs
- SpeechSynthesizer.cs
- RowBinding.cs
- IsolatedStorageFilePermission.cs
- WindowsFormsDesignerOptionService.cs
- SiteMapNodeItemEventArgs.cs
- InputMethodStateChangeEventArgs.cs
- WebPartVerbCollection.cs
- Object.cs
- CqlBlock.cs
- AxImporter.cs
- SmiMetaData.cs
- SqlAggregateChecker.cs
- FormsAuthenticationModule.cs
- HyperLink.cs
- HttpCachePolicy.cs
- WebSysDisplayNameAttribute.cs
- IdentityManager.cs
- UrlPropertyAttribute.cs
- RequestNavigateEventArgs.cs
- AnnouncementDispatcherAsyncResult.cs
- MatrixCamera.cs
- XmlAttributeAttribute.cs
- NextPreviousPagerField.cs
- DataGridViewRowDividerDoubleClickEventArgs.cs
- InfiniteIntConverter.cs
- TextEffectResolver.cs
- HttpHandler.cs
- PageOrientation.cs
- WorkflowInvoker.cs
- isolationinterop.cs
- SourceFileInfo.cs
- CanExpandCollapseAllConverter.cs
- OutputCacheModule.cs
- CodePropertyReferenceExpression.cs
- ErrorFormatterPage.cs
- StoreItemCollection.Loader.cs
- HtmlTableCellCollection.cs
- RectangleHotSpot.cs
- HyperLinkStyle.cs
- Image.cs
- ContextDataSource.cs
- SettingsSavedEventArgs.cs
- fixedPageContentExtractor.cs
- EntityReference.cs
- ScriptingRoleServiceSection.cs
- XmlAnyAttributeAttribute.cs
- IResourceProvider.cs
- precedingquery.cs
- AttributeTableBuilder.cs
- HttpRequestWrapper.cs
- EditableRegion.cs
- Opcode.cs
- SeekStoryboard.cs
- Control.cs
- Point.cs
- EditorBrowsableAttribute.cs
- ErrorTableItemStyle.cs
- DesignerActionItemCollection.cs
- StylusTip.cs
- ModelUIElement3D.cs
- WebBrowsableAttribute.cs
- TableLayoutPanelCellPosition.cs
- SpecialNameAttribute.cs
- listviewsubitemcollectioneditor.cs
- ParameterCollection.cs
- AnnotationStore.cs
- Authorization.cs
- EmptyEnumerator.cs
- Simplifier.cs
- Tracking.cs
- CommandHelpers.cs
- SpinWait.cs
- Matrix3DValueSerializer.cs
- CqlParserHelpers.cs
- CodeAttributeArgument.cs
- _ReceiveMessageOverlappedAsyncResult.cs
- DataGridColumnCollection.cs
- UserControlCodeDomTreeGenerator.cs