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
- DataColumnCollection.cs
- DataContractSerializerMessageContractImporter.cs
- DataSourceHelper.cs
- SoapHeaderAttribute.cs
- DoubleAnimationUsingPath.cs
- FixedPosition.cs
- BinaryWriter.cs
- xmlformatgeneratorstatics.cs
- DataFormats.cs
- Registry.cs
- XmlSchemaAll.cs
- DefaultObjectMappingItemCollection.cs
- SendingRequestEventArgs.cs
- MediaPlayerState.cs
- WpfWebRequestHelper.cs
- MdImport.cs
- DocumentViewer.cs
- AncestorChangedEventArgs.cs
- sqlser.cs
- EdgeModeValidation.cs
- TransactionFlowOption.cs
- BevelBitmapEffect.cs
- SourceFileBuildProvider.cs
- TextEditorLists.cs
- EnvelopedSignatureTransform.cs
- Filter.cs
- Rfc4050KeyFormatter.cs
- PropertyFilter.cs
- NetworkInterface.cs
- TreeNode.cs
- UrlMappingCollection.cs
- ClassGenerator.cs
- Tablet.cs
- ConditionalAttribute.cs
- XhtmlMobileTextWriter.cs
- CommonXSendMessage.cs
- MethodInfo.cs
- EffectiveValueEntry.cs
- RegexParser.cs
- HtmlMeta.cs
- CursorConverter.cs
- IRCollection.cs
- _CacheStreams.cs
- TextServicesLoader.cs
- SizeIndependentAnimationStorage.cs
- XpsS0ValidatingLoader.cs
- HMACRIPEMD160.cs
- RetrieveVirtualItemEventArgs.cs
- CatalogPartCollection.cs
- CacheVirtualItemsEvent.cs
- MetadataArtifactLoaderFile.cs
- BitArray.cs
- MsmqChannelListenerBase.cs
- PbrsForward.cs
- TextReader.cs
- PeekCompletedEventArgs.cs
- TextElementEditingBehaviorAttribute.cs
- AttributeParameterInfo.cs
- EventLogPermissionAttribute.cs
- MemberMaps.cs
- PenLineJoinValidation.cs
- EventLogPermissionAttribute.cs
- TypeHelpers.cs
- SafeLocalAllocation.cs
- SoapEnumAttribute.cs
- ClrProviderManifest.cs
- SoapIgnoreAttribute.cs
- ParameterDataSourceExpression.cs
- CommandLibraryHelper.cs
- KeyedCollection.cs
- KeyboardDevice.cs
- GroupAggregateExpr.cs
- HostedNamedPipeTransportManager.cs
- SecurityTokenRequirement.cs
- CodeMemberProperty.cs
- TextTrailingCharacterEllipsis.cs
- CodeEntryPointMethod.cs
- BrowserTree.cs
- WebPartHeaderCloseVerb.cs
- UserControl.cs
- GridViewRowEventArgs.cs
- CustomSignedXml.cs
- ObjRef.cs
- LoginCancelEventArgs.cs
- WebPartZone.cs
- SystemThemeKey.cs
- SingletonInstanceContextProvider.cs
- _Connection.cs
- Msec.cs
- precedingsibling.cs
- FixedSchema.cs
- BaseUriWithWildcard.cs
- Subtree.cs
- HtmlInputFile.cs
- Attributes.cs
- safePerfProviderHandle.cs
- NativeCompoundFileAPIs.cs
- FrugalList.cs
- SponsorHelper.cs
- DynamicMetaObjectBinder.cs