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
- BitmapEffectDrawing.cs
- PhonemeEventArgs.cs
- SqlCaseSimplifier.cs
- DoubleConverter.cs
- DataListItem.cs
- UInt64.cs
- DocumentationServerProtocol.cs
- QilFunction.cs
- _WinHttpWebProxyDataBuilder.cs
- SingleObjectCollection.cs
- QilVisitor.cs
- BaseTransportHeaders.cs
- DebuggerService.cs
- SoapIncludeAttribute.cs
- DataSvcMapFileSerializer.cs
- NavigationPropertyEmitter.cs
- parserscommon.cs
- NativeRightsManagementAPIsStructures.cs
- WebPartZone.cs
- HelpKeywordAttribute.cs
- DescendantBaseQuery.cs
- EncoderParameter.cs
- WorkflowOwnershipException.cs
- XmlSchemaRedefine.cs
- ZoneButton.cs
- UpnEndpointIdentityExtension.cs
- DecimalMinMaxAggregationOperator.cs
- KnownIds.cs
- XmlSchemaSimpleContent.cs
- CompositeTypefaceMetrics.cs
- PlatformNotSupportedException.cs
- PauseStoryboard.cs
- TileModeValidation.cs
- DBDataPermissionAttribute.cs
- ConditionalWeakTable.cs
- UnsafeCollabNativeMethods.cs
- ColumnCollection.cs
- XamlSerializerUtil.cs
- ListBoxItemWrapperAutomationPeer.cs
- X509CertificateTrustedIssuerElementCollection.cs
- DefaultEvaluationContext.cs
- Identity.cs
- CompilationSection.cs
- AssemblyFilter.cs
- Overlapped.cs
- StructuralType.cs
- PresentationAppDomainManager.cs
- VolatileEnlistmentMultiplexing.cs
- SwitchElementsCollection.cs
- XmlNodeChangedEventArgs.cs
- WindowsGraphicsWrapper.cs
- BaseParagraph.cs
- Pair.cs
- FlowLayoutPanelDesigner.cs
- PasswordTextContainer.cs
- AssociationSetEnd.cs
- OleDbDataReader.cs
- SolidColorBrush.cs
- DbProviderManifest.cs
- AssemblyAttributesGoHere.cs
- DocumentSequenceHighlightLayer.cs
- TableAutomationPeer.cs
- InheritedPropertyChangedEventArgs.cs
- CodeSnippetStatement.cs
- DrawingGroup.cs
- Bind.cs
- RC2.cs
- EventSchemaTraceListener.cs
- ContainerControl.cs
- WebPartAuthorizationEventArgs.cs
- AnimatedTypeHelpers.cs
- OutputScopeManager.cs
- GroupBox.cs
- UnauthorizedAccessException.cs
- TextFormatterContext.cs
- WebPartHelpVerb.cs
- ValueUtilsSmi.cs
- ResourceLoader.cs
- DiscoveryClientOutputChannel.cs
- Style.cs
- TextElementAutomationPeer.cs
- SqlRowUpdatingEvent.cs
- FileDialogCustomPlace.cs
- OleDbConnectionInternal.cs
- MasterPageCodeDomTreeGenerator.cs
- Matrix3DStack.cs
- PersonalizationDictionary.cs
- DbReferenceCollection.cs
- XmlChildEnumerator.cs
- TextEditorContextMenu.cs
- AddInPipelineAttributes.cs
- PictureBoxDesigner.cs
- WindowManager.cs
- DataGridViewRowsRemovedEventArgs.cs
- Animatable.cs
- TransactionInterop.cs
- MailWebEventProvider.cs
- metrodevice.cs
- CodeTypeReferenceExpression.cs
- BitmapMetadataBlob.cs