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
- PresentationSource.cs
- SqlServer2KCompatibilityCheck.cs
- HttpWebResponse.cs
- figurelength.cs
- StrongNamePublicKeyBlob.cs
- OleDbConnectionFactory.cs
- ObfuscationAttribute.cs
- ArraySet.cs
- GacUtil.cs
- DiscoveryDocumentSerializer.cs
- ServiceThrottlingBehavior.cs
- X509Extension.cs
- InputScope.cs
- OleDbCommandBuilder.cs
- ItemCheckEvent.cs
- HostedHttpTransportManager.cs
- HtmlTable.cs
- SocketException.cs
- CodeDomConfigurationHandler.cs
- NamespaceMapping.cs
- CapiHashAlgorithm.cs
- InstanceCompleteException.cs
- StackOverflowException.cs
- FunctionImportMapping.cs
- SqlTypeSystemProvider.cs
- XmlSchemaAppInfo.cs
- XmlWriterDelegator.cs
- DeviceOverridableAttribute.cs
- EncryptedPackageFilter.cs
- DataGridViewCellMouseEventArgs.cs
- NativeDirectoryServicesQueryAPIs.cs
- DBConnectionString.cs
- WebPartTransformerAttribute.cs
- HtmlGenericControl.cs
- IOThreadScheduler.cs
- SelectionPatternIdentifiers.cs
- RangeBase.cs
- ValidationSummary.cs
- MenuEventArgs.cs
- TextContainerChangeEventArgs.cs
- WebSysDescriptionAttribute.cs
- Rect3DValueSerializer.cs
- ByteStorage.cs
- InternalTransaction.cs
- XmlQualifiedNameTest.cs
- EmptyControlCollection.cs
- TextBox.cs
- ColorContext.cs
- TransformValueSerializer.cs
- MinimizableAttributeTypeConverter.cs
- GrammarBuilderWildcard.cs
- LayoutTableCell.cs
- InstanceStore.cs
- DataSourceControlBuilder.cs
- SqlServer2KCompatibilityAnnotation.cs
- DynamicDataRoute.cs
- PathGradientBrush.cs
- ItemList.cs
- BmpBitmapDecoder.cs
- TreeNodeCollectionEditor.cs
- ApplicationProxyInternal.cs
- RefreshPropertiesAttribute.cs
- ContainerParaClient.cs
- MonikerUtility.cs
- CookieProtection.cs
- XmlIncludeAttribute.cs
- SvcMapFile.cs
- FontSizeConverter.cs
- InheritanceAttribute.cs
- SingleSelectRootGridEntry.cs
- DrawListViewItemEventArgs.cs
- PKCS1MaskGenerationMethod.cs
- ListViewItem.cs
- UniqueContractNameValidationBehavior.cs
- LinqDataSourceHelper.cs
- Int16AnimationUsingKeyFrames.cs
- WebControlsSection.cs
- MenuEventArgs.cs
- ConsoleCancelEventArgs.cs
- Menu.cs
- DLinqDataModelProvider.cs
- OutOfMemoryException.cs
- Directory.cs
- HorizontalAlignConverter.cs
- FakeModelItemImpl.cs
- LeftCellWrapper.cs
- initElementDictionary.cs
- UserPreference.cs
- FixUp.cs
- Rules.cs
- DictionaryContent.cs
- DriveNotFoundException.cs
- EndPoint.cs
- QueueNameHelper.cs
- DataRowExtensions.cs
- SerializerWriterEventHandlers.cs
- FormView.cs
- EastAsianLunisolarCalendar.cs
- KeyProperty.cs
- RewritingSimplifier.cs