Code:
/ WCF / WCF / 3.5.30729.1 / untmp / Orcas / SP / ndp / cdf / src / WCF / TransactionBridge / Microsoft / Transactions / Wsat / InputOutput / Faults.cs / 1 / Faults.cs
//------------------------------------------------------------------------------ // Copyright (c) Microsoft Corporation. All rights reserved. //----------------------------------------------------------------------------- // Implement special-case faults that require dynamic reason generation using System; using System.ServiceModel.Channels; using System.Diagnostics; using System.ServiceModel; using System.Xml; using Microsoft.Transactions.Wsat.Messaging; using Microsoft.Transactions.Wsat.Protocol; using DiagnosticUtility = Microsoft.Transactions.Bridge.DiagnosticUtility; using Fault = Microsoft.Transactions.Wsat.Messaging.Fault; namespace Microsoft.Transactions.Wsat.InputOutput { class CoordinatorRegistrationFailedFault : Fault { // This fault is used only with WSAT 1.0 CoordinatorRegistrationFailedFault(string coordinatorReason) : base(AtomicTransactionStrings.Version(ProtocolVersion.Version10).FaultAction, Faults.CoordinatorRegistrationFailedCode, coordinatorReason) { } public static CoordinatorRegistrationFailedFault CreateFault(MessageFault fault) { string coordinatorReason; if (fault == null) { coordinatorReason = SR.GetString(SR.CoordinatorRegistrationFailedReason); } else { string coordinatorCode = Library.GetFaultCodeName(fault); if (coordinatorCode == null) { coordinatorReason = SR.GetString(SR.CoordinatorRegistrationFaultedUnknownReason); } else { coordinatorReason = SR.GetString(SR.CoordinatorRegistrationFaultedReason, coordinatorCode); } } return new CoordinatorRegistrationFailedFault(coordinatorReason); } } class FaultSender { ProtocolState state; AsyncCallback sendFaultComplete; public FaultSender(ProtocolState state) { this.state = state; this.sendFaultComplete = DiagnosticUtility.ThunkAsyncCallback(new AsyncCallback(SendFaultComplete)); } public void TrySendCompletionParticipantFault(EndpointAddress faultTo, UniqueId messageID, Fault fault) { DatagramProxy proxy = state.TryCreateCompletionParticipantProxy(faultTo); if (proxy == null) { if (DebugTrace.Warning) DebugTrace.Trace(TraceLevel.Warning, "Could not create a proxy to send {0} fault", fault.Code.Name); } else { try { TrySendFault(proxy, messageID, fault); } finally { proxy.Release(); } } } public void TrySendTwoPhaseCommitParticipantFault(EndpointAddress faultTo, UniqueId messageID, Fault fault) { DatagramProxy proxy = state.TryCreateTwoPhaseCommitParticipantProxy(faultTo); if (proxy == null) { if (DebugTrace.Warning) DebugTrace.Trace(TraceLevel.Warning, "Could not create a proxy to send {0} fault", fault.Code.Name); } else { try { TrySendFault(proxy, messageID, fault); } finally { proxy.Release(); } } } public void TrySendTwoPhaseCommitCoordinatorFault(EndpointAddress faultTo, UniqueId messageID, Fault fault) { DatagramProxy proxy = state.TryCreateTwoPhaseCommitCoordinatorProxy(faultTo); if (proxy == null) { if (DebugTrace.Warning) DebugTrace.Trace(TraceLevel.Warning, "Could not create a proxy to send {0} fault", fault.Code.Name); } else { try { TrySendFault(proxy, messageID, fault); } finally { proxy.Release(); } } } void TrySendFault(DatagramProxy proxy, UniqueId messageID, Fault fault) { if (proxy == null) { if (DebugTrace.Warning) DebugTrace.Trace(TraceLevel.Warning, "Could not create a proxy to send {0} fault", fault.Code.Name); } else { state.Perf.FaultsSentCountPerInterval.Increment(); if (DebugTrace.Info) DebugTrace.Trace(TraceLevel.Info, "Sending {0} fault to {1}", fault.Code.Name, Ports.TryGetAddress(proxy)); IAsyncResult ar = proxy.BeginSendFault(messageID, fault, sendFaultComplete, proxy); if (ar.CompletedSynchronously) { OnSendFaultComplete(ar, proxy); } } } void SendFaultComplete(IAsyncResult ar) { if (!ar.CompletedSynchronously) { OnSendFaultComplete(ar, (DatagramProxy) ar.AsyncState); } } void OnSendFaultComplete(IAsyncResult ar, DatagramProxy proxy) { try { proxy.EndSendMessage(ar); } catch (WsatSendFailureException e) { DiagnosticUtility.ExceptionUtility.TraceHandledException(e, TraceEventType.Warning); DebugTrace.TraceSendFailure(e); state.Perf.MessageSendFailureCountPerInterval.Increment(); } } } } // 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
- SweepDirectionValidation.cs
- InputEventArgs.cs
- SerializationException.cs
- ProjectionPath.cs
- ValueOfAction.cs
- _SslStream.cs
- InputEventArgs.cs
- Parameter.cs
- InstanceData.cs
- WorkflowTraceTransfer.cs
- InvalidFilterCriteriaException.cs
- XmlNamespaceManager.cs
- ReceiveActivity.cs
- XmlNamespaceManager.cs
- TemplateColumn.cs
- TypeExtensionSerializer.cs
- Cursor.cs
- CompilationSection.cs
- StyleBamlRecordReader.cs
- PersistNameAttribute.cs
- CellLabel.cs
- SafeSystemMetrics.cs
- Duration.cs
- OpenFileDialog.cs
- DataBoundControl.cs
- HttpCacheVary.cs
- ReadOnlyCollectionBase.cs
- MinimizableAttributeTypeConverter.cs
- WebEventCodes.cs
- EventDriven.cs
- UntrustedRecipientException.cs
- GridViewColumnCollectionChangedEventArgs.cs
- FtpWebRequest.cs
- TemporaryBitmapFile.cs
- RijndaelManaged.cs
- Window.cs
- ClientRoleProvider.cs
- ParsedAttributeCollection.cs
- RichTextBoxConstants.cs
- OleDbErrorCollection.cs
- EventLogException.cs
- IsolatedStoragePermission.cs
- LoadedEvent.cs
- RegistrationContext.cs
- RTLAwareMessageBox.cs
- InvalidComObjectException.cs
- DataGridTableCollection.cs
- PackagingUtilities.cs
- Help.cs
- EntityCollection.cs
- DataView.cs
- XmlSerializerFactory.cs
- HttpPostedFile.cs
- ObjectIDGenerator.cs
- HMACRIPEMD160.cs
- AspCompat.cs
- SqlMultiplexer.cs
- sitestring.cs
- XhtmlMobileTextWriter.cs
- FactoryRecord.cs
- TemplateInstanceAttribute.cs
- XmlCharType.cs
- Ray3DHitTestResult.cs
- GridViewColumn.cs
- ActivitiesCollection.cs
- ResourceKey.cs
- ExtensionElementCollection.cs
- BindingContext.cs
- SuppressMessageAttribute.cs
- ZoneMembershipCondition.cs
- PriorityQueue.cs
- SplineKeyFrames.cs
- CaseExpr.cs
- PreservationFileReader.cs
- TransactionFlowOption.cs
- ResourceWriter.cs
- HttpInputStream.cs
- SystemWebCachingSectionGroup.cs
- WebScriptServiceHostFactory.cs
- CfgRule.cs
- Tuple.cs
- Typography.cs
- XmlName.cs
- ScaleTransform3D.cs
- coordinatorscratchpad.cs
- Module.cs
- DataGridViewCell.cs
- XmlHelper.cs
- GridItemProviderWrapper.cs
- UIPermission.cs
- ScrollProviderWrapper.cs
- DrawToolTipEventArgs.cs
- AncestorChangedEventArgs.cs
- IxmlLineInfo.cs
- SafeNativeMethods.cs
- StagingAreaInputItem.cs
- ReliabilityContractAttribute.cs
- MobileUserControlDesigner.cs
- XmlSchemaAttributeGroup.cs
- MediaScriptCommandRoutedEventArgs.cs