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
- SynchronizationScope.cs
- ColorEditor.cs
- BaseValidator.cs
- TableLayoutPanelDesigner.cs
- FollowerQueueCreator.cs
- TimeoutHelper.cs
- IPipelineRuntime.cs
- DataGridComboBoxColumn.cs
- DLinqAssociationProvider.cs
- IResourceProvider.cs
- Subset.cs
- TextParagraph.cs
- ManagedFilter.cs
- RunInstallerAttribute.cs
- SafeCryptoHandles.cs
- HttpProtocolImporter.cs
- OperatorExpressions.cs
- CreateUserWizard.cs
- SqlUDTStorage.cs
- Rule.cs
- ClockController.cs
- BitmapData.cs
- OdbcPermission.cs
- HttpMethodConstraint.cs
- GridViewCancelEditEventArgs.cs
- DefaultBinder.cs
- nulltextcontainer.cs
- CqlParserHelpers.cs
- BatchParser.cs
- NonSerializedAttribute.cs
- StreamAsIStream.cs
- PerformanceCounterPermissionAttribute.cs
- ReadOnlyCollection.cs
- ConfigurationStrings.cs
- ObsoleteAttribute.cs
- Tile.cs
- TabletCollection.cs
- DataGridCaption.cs
- MetadataArtifactLoaderCompositeResource.cs
- MonitoringDescriptionAttribute.cs
- CodeDirectiveCollection.cs
- SelectionPatternIdentifiers.cs
- WmlPanelAdapter.cs
- MarkupExtensionReturnTypeAttribute.cs
- TreeNode.cs
- CompatibleIComparer.cs
- elementinformation.cs
- CustomCredentialPolicy.cs
- ProcessInfo.cs
- UntypedNullExpression.cs
- LabelAutomationPeer.cs
- SqlCaseSimplifier.cs
- XmlILTrace.cs
- SyntaxCheck.cs
- GcSettings.cs
- ExtendedPropertyCollection.cs
- PermissionSet.cs
- SiteMapNodeItemEventArgs.cs
- GridView.cs
- PixelShader.cs
- LayoutManager.cs
- SolidColorBrush.cs
- CfgArc.cs
- CngKey.cs
- StorageComplexPropertyMapping.cs
- ConfigurationSection.cs
- AddInContractAttribute.cs
- BitmapCodecInfoInternal.cs
- SizeFConverter.cs
- DateTimePickerDesigner.cs
- ZipIOCentralDirectoryFileHeader.cs
- OrderedDictionary.cs
- CompilationRelaxations.cs
- StylusLogic.cs
- ConfigurationProperty.cs
- PropertyManager.cs
- BypassElementCollection.cs
- SoundPlayerAction.cs
- PointCollectionValueSerializer.cs
- DataBinding.cs
- BinHexDecoder.cs
- Label.cs
- MsmqOutputChannel.cs
- PropertyToken.cs
- PasswordRecovery.cs
- PropertyDescriptorComparer.cs
- VirtualDirectoryMapping.cs
- ExpressionConverter.cs
- FixedFindEngine.cs
- AppliedDeviceFiltersEditor.cs
- ProtectedProviderSettings.cs
- AttachedPropertyBrowsableForTypeAttribute.cs
- BindingManagerDataErrorEventArgs.cs
- TreeViewImageIndexConverter.cs
- TableNameAttribute.cs
- HandlerElementCollection.cs
- DataGridView.cs
- TransactionValidationBehavior.cs
- NullableFloatSumAggregationOperator.cs
- EmbeddedMailObject.cs