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
- CapabilitiesAssignment.cs
- TargetConverter.cs
- XmlSchemaExternal.cs
- EventWaitHandle.cs
- FlowDocumentReaderAutomationPeer.cs
- ExtendedProtectionPolicy.cs
- ApplicationServiceManager.cs
- Roles.cs
- FlowLayout.cs
- SafeFindHandle.cs
- DataGridViewRowHeightInfoNeededEventArgs.cs
- BooleanAnimationUsingKeyFrames.cs
- StyleSheetComponentEditor.cs
- TextStore.cs
- OuterProxyWrapper.cs
- ListBoxChrome.cs
- InputMethodStateTypeInfo.cs
- SharedPersonalizationStateInfo.cs
- validationstate.cs
- WeakReferenceEnumerator.cs
- XmlDocumentSerializer.cs
- HttpFileCollection.cs
- CompModSwitches.cs
- DictionaryKeyPropertyAttribute.cs
- EnumMember.cs
- ColorConvertedBitmap.cs
- Int64.cs
- TextDecorationCollection.cs
- ToolStripScrollButton.cs
- ComponentResourceManager.cs
- SecurityKeyEntropyMode.cs
- RouteUrlExpressionBuilder.cs
- UIntPtr.cs
- ProfileManager.cs
- FormCollection.cs
- SetIterators.cs
- xdrvalidator.cs
- CaseInsensitiveComparer.cs
- FacetValues.cs
- WebPartDisplayModeCollection.cs
- DelegatingTypeDescriptionProvider.cs
- TextTreeTextBlock.cs
- ObjectHelper.cs
- FileController.cs
- Grant.cs
- CompilerParameters.cs
- ConditionalDesigner.cs
- GroupBox.cs
- Message.cs
- HighContrastHelper.cs
- MDIControlStrip.cs
- Rijndael.cs
- SendKeys.cs
- StylusTip.cs
- ByteAnimation.cs
- HttpChannelListener.cs
- FieldAccessException.cs
- ISAPIRuntime.cs
- AttachedPropertyBrowsableWhenAttributePresentAttribute.cs
- XmlObjectSerializer.cs
- PathSegmentCollection.cs
- GenericUriParser.cs
- BuildProviderCollection.cs
- AppDomainUnloadedException.cs
- ResolvedKeyFrameEntry.cs
- InputScope.cs
- DataRecordInternal.cs
- _ScatterGatherBuffers.cs
- TextServicesDisplayAttributePropertyRanges.cs
- CategoryEditor.cs
- CodeDefaultValueExpression.cs
- RadialGradientBrush.cs
- FamilyMapCollection.cs
- Stackframe.cs
- MsdtcClusterUtils.cs
- XmlSerializerOperationGenerator.cs
- GeneralTransform3D.cs
- StoreItemCollection.cs
- NumericUpDown.cs
- ErrorRuntimeConfig.cs
- XPathNode.cs
- ScrollItemPattern.cs
- LoginCancelEventArgs.cs
- OrderPreservingMergeHelper.cs
- AtomParser.cs
- StorageEndPropertyMapping.cs
- DependencyPropertyKind.cs
- MemoryStream.cs
- WinInetCache.cs
- DesignBindingConverter.cs
- TextEvent.cs
- PolyLineSegment.cs
- ReceiveDesigner.xaml.cs
- ExpressionParser.cs
- ChannelCacheSettings.cs
- BidirectionalDictionary.cs
- SystemResourceKey.cs
- SafeArchiveContext.cs
- DataGridViewEditingControlShowingEventArgs.cs
- BaseDataList.cs