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
- MetafileHeader.cs
- WebPart.cs
- SubpageParagraph.cs
- HwndAppCommandInputProvider.cs
- XmlCodeExporter.cs
- Label.cs
- MarginsConverter.cs
- CompilationUnit.cs
- ArrangedElement.cs
- BitmapScalingModeValidation.cs
- Double.cs
- GlyphRun.cs
- PingReply.cs
- ArcSegment.cs
- RightsManagementPermission.cs
- XmlAttributeCache.cs
- StatusBarPanel.cs
- BulletChrome.cs
- ColumnBinding.cs
- FormsAuthenticationConfiguration.cs
- QilLoop.cs
- TextParagraphCache.cs
- ToolStripRenderEventArgs.cs
- RegexCompilationInfo.cs
- LinkedResource.cs
- PartialClassGenerationTask.cs
- ModulesEntry.cs
- CodePrimitiveExpression.cs
- LinqTreeNodeEvaluator.cs
- AliasGenerator.cs
- Graph.cs
- StrokeIntersection.cs
- DataKey.cs
- HtmlInputImage.cs
- PreProcessInputEventArgs.cs
- WebPartUtil.cs
- ArithmeticLiteral.cs
- XmlUtf8RawTextWriter.cs
- X509Utils.cs
- _ChunkParse.cs
- NameObjectCollectionBase.cs
- CustomMenuItemCollection.cs
- Vars.cs
- DataFormats.cs
- RecordManager.cs
- WindowsFormsHelpers.cs
- XPathArrayIterator.cs
- CellCreator.cs
- GenericTypeParameterConverter.cs
- FontWeight.cs
- Function.cs
- DataServiceQueryException.cs
- TypeResolver.cs
- Mutex.cs
- BindingContext.cs
- mediaeventshelper.cs
- ProcessModelInfo.cs
- Matrix.cs
- BamlStream.cs
- BamlTreeUpdater.cs
- ConstrainedDataObject.cs
- WebPartConnectionsCancelEventArgs.cs
- SystemWebCachingSectionGroup.cs
- ReaderContextStackData.cs
- TagPrefixAttribute.cs
- KnownTypesProvider.cs
- XmlSchemaSet.cs
- HtmlToClrEventProxy.cs
- KerberosTicketHashIdentifierClause.cs
- WindowsStreamSecurityElement.cs
- Command.cs
- CatalogPartCollection.cs
- DataFieldCollectionEditor.cs
- UrlEncodedParameterWriter.cs
- DependencyObject.cs
- XmlAttributeOverrides.cs
- DataComponentNameHandler.cs
- Splitter.cs
- ValidationResults.cs
- QilInvokeEarlyBound.cs
- GeneralTransform3DGroup.cs
- URLIdentityPermission.cs
- StylusEditingBehavior.cs
- Constants.cs
- ProcessHostFactoryHelper.cs
- AuthenticateEventArgs.cs
- ExceptionUtil.cs
- wgx_exports.cs
- OutputCacheSettings.cs
- isolationinterop.cs
- HtmlDocument.cs
- Int32KeyFrameCollection.cs
- LineBreak.cs
- ParameterBinding.cs
- IpcServerChannel.cs
- Int64Converter.cs
- SmtpFailedRecipientException.cs
- ISAPIApplicationHost.cs
- XmlParserContext.cs
- EncoderFallback.cs