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
- BrushMappingModeValidation.cs
- XsdValidatingReader.cs
- Stroke.cs
- ResourceExpressionBuilder.cs
- TextProviderWrapper.cs
- WriteStateInfoBase.cs
- TypeToStringValueConverter.cs
- RegexMatch.cs
- ParseHttpDate.cs
- FullTrustAssembliesSection.cs
- PeerNearMe.cs
- TransportDefaults.cs
- HostedController.cs
- InputLanguageSource.cs
- XmlDictionaryReaderQuotasElement.cs
- TypeTypeConverter.cs
- XmlMembersMapping.cs
- TextRange.cs
- EntityCommandExecutionException.cs
- basenumberconverter.cs
- Helpers.cs
- ScriptControl.cs
- DefaultPrintController.cs
- SafeThreadHandle.cs
- TextTreeExtractElementUndoUnit.cs
- NetStream.cs
- PropertyManager.cs
- MonthCalendar.cs
- SymmetricKeyWrap.cs
- ValuePatternIdentifiers.cs
- ReferenceService.cs
- HtmlButton.cs
- NullableDecimalSumAggregationOperator.cs
- ThreadInterruptedException.cs
- StylusPointPropertyInfoDefaults.cs
- ProcessThread.cs
- EventLog.cs
- ComponentEditorForm.cs
- TerminatorSinks.cs
- Ref.cs
- InstancePersistenceCommand.cs
- HandleExceptionArgs.cs
- WindowsTab.cs
- HttpException.cs
- DebugView.cs
- ToolStripItemDataObject.cs
- GenericWebPart.cs
- PixelShader.cs
- HttpClientCertificate.cs
- EntryWrittenEventArgs.cs
- ValidationEventArgs.cs
- Propagator.Evaluator.cs
- NativeMethods.cs
- SingleAnimationUsingKeyFrames.cs
- PrivilegedConfigurationManager.cs
- Quaternion.cs
- RangeBaseAutomationPeer.cs
- XmlLangPropertyAttribute.cs
- SharedStatics.cs
- EnumType.cs
- FrameworkContentElement.cs
- DecoderNLS.cs
- IntellisenseTextBox.designer.cs
- VerticalAlignConverter.cs
- DocumentApplication.cs
- DataGridViewColumnTypePicker.cs
- TTSEvent.cs
- PropertyChangingEventArgs.cs
- WebPartZoneBase.cs
- StringAnimationBase.cs
- BasePattern.cs
- DataContractSerializerSection.cs
- BrowserDefinition.cs
- MessageSecurityTokenVersion.cs
- ProtocolInformationReader.cs
- ContextBase.cs
- StorageSetMapping.cs
- LinkedDataMemberFieldEditor.cs
- RubberbandSelector.cs
- ExpandableObjectConverter.cs
- AssemblyHash.cs
- CommandBindingCollection.cs
- ConnectionPoint.cs
- Solver.cs
- SharedStatics.cs
- invalidudtexception.cs
- ArrayList.cs
- XmlSchemaNotation.cs
- WebPartEditorCancelVerb.cs
- XmlElement.cs
- ClientEventManager.cs
- VBCodeProvider.cs
- StylusPointPropertyId.cs
- TypeForwardedToAttribute.cs
- FrameworkElementFactoryMarkupObject.cs
- ImageMapEventArgs.cs
- RepeaterItem.cs
- AspNetPartialTrustHelpers.cs
- FlowDocumentPage.cs
- DesignBindingPropertyDescriptor.cs