Code:
/ WCF / WCF / 3.5.30729.1 / untmp / Orcas / SP / ndp / cdf / src / WCF / TransactionBridge / Microsoft / Transactions / Wsat / StateMachines / Subordinate.cs / 1 / Subordinate.cs
//------------------------------------------------------------------------------ // Copyright (c) Microsoft Corporation. All rights reserved. //----------------------------------------------------------------------------- // This file contains the the implementations of the various states used by the // Subordinate state machine, which handles incoming activation and registration events // for transactions with DTC as superior and no WS-AT coordinator. // // This is a somewhat special state machine, in that it has no "active" states using System; using System.Diagnostics; using Microsoft.Transactions.Bridge; using Microsoft.Transactions.Wsat.Messaging; using Microsoft.Transactions.Wsat.InputOutput; using Microsoft.Transactions.Wsat.Protocol; using Fault = Microsoft.Transactions.Wsat.Messaging.Fault; namespace Microsoft.Transactions.Wsat.StateMachines { //============================================================================= // SubordinateInitializing // // A CreateCoordinationContext message was received // DTC already knew about the transaction, so we can't be superior to DTC // We will therefore be subordinate to DTC for the transaction //============================================================================= class SubordinateInitializing : InactiveState { public SubordinateInitializing(ProtocolState state) : base(state) { } public override void OnEvent(InternalEnlistSubordinateTransactionEvent e) { ParticipantEnlistment participant = e.Participant; state.TransactionManagerSend.Register(participant, e); participant.StateMachine.ChangeState(state.States.SubordinateRegistering); } } //============================================================================== // SubordinateRegistering // // We asked the TM to create a new subordinate enlistment //============================================================================= class SubordinateRegistering : InactiveState { public SubordinateRegistering(ProtocolState state) : base(state) { } public override void OnEvent(TmSubordinateRegisterResponseEvent e) { ParticipantEnlistment participant = e.Participant; Status status = e.Status; if (status == Status.Success) { participant.OnSubordinateRegistered(); participant.StateMachine.ChangeState(state.States.SubordinateActive); } else { if (status == Status.TransactionNotFound && !state.TransactionManager.Settings.NetworkInboundAccess) { participant.ContextManager.Fault = this.state.Faults.SubordinateRegistrationNetAccessDisabled; } else { participant.ContextManager.Fault = this.state.Faults.SubordinateTMRegistrationFailed(status); } participant.StateMachine.ChangeState(state.States.SubordinateFinished); } } } //============================================================================== // SubordinateActive // // A dummy subordinate was created for the enlistment // We await news from the transaction manager //============================================================================== class SubordinateActive : InactiveState { public SubordinateActive(ProtocolState state) : base(state) { } public override void OnEvent(TmPrepareEvent e) { ParticipantEnlistment participant = e.Participant; participant.SetCallback(e.Callback, e.CallbackState); state.TransactionManagerSend.ReadOnly(participant); participant.StateMachine.ChangeState(state.States.SubordinateFinished); } public override void OnEvent(TmRollbackEvent e) { ParticipantEnlistment participant = e.Participant; participant.SetCallback(e.Callback, e.CallbackState); state.TransactionManagerSend.Aborted(participant); participant.StateMachine.ChangeState(state.States.SubordinateFinished); } } //============================================================================= // SubordinateFinished // // The subordinate enlistment has ended //============================================================================== class SubordinateFinished : TerminalState { public SubordinateFinished(ProtocolState state) : base(state) { } } } // 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
- ExpanderAutomationPeer.cs
- RemoteWebConfigurationHostStream.cs
- SQLMoney.cs
- ExtensionFile.cs
- WebChannelFactory.cs
- StringToken.cs
- BooleanConverter.cs
- MetadataFile.cs
- DataBoundControlAdapter.cs
- WebControl.cs
- ClientType.cs
- _DomainName.cs
- __ConsoleStream.cs
- ValueOfAction.cs
- WebPartHeaderCloseVerb.cs
- ApplicationCommands.cs
- EventRoute.cs
- ModifierKeysValueSerializer.cs
- WindowsIdentity.cs
- SafeCloseHandleCritical.cs
- ProbeMatchesMessage11.cs
- DownloadProgressEventArgs.cs
- X509IssuerSerialKeyIdentifierClause.cs
- Stopwatch.cs
- BindingNavigator.cs
- SqlDataSourceQuery.cs
- ImmutablePropertyDescriptorGridEntry.cs
- XmlSchemaElement.cs
- MediaContext.cs
- CodeActivityMetadata.cs
- _SslState.cs
- DynamicField.cs
- Translator.cs
- ControlBindingsCollection.cs
- InputEventArgs.cs
- KeyboardEventArgs.cs
- CodeVariableReferenceExpression.cs
- SimpleTextLine.cs
- ToolStripItemCollection.cs
- PtsHelper.cs
- ToolStripProgressBar.cs
- RenderingEventArgs.cs
- CanonicalFontFamilyReference.cs
- PageTheme.cs
- _FtpDataStream.cs
- TraceContextRecord.cs
- x509store.cs
- WebResourceAttribute.cs
- SafeArrayRankMismatchException.cs
- CopyEncoder.cs
- MetadataArtifactLoaderCompositeResource.cs
- SqlFactory.cs
- Wizard.cs
- QueryOperationResponseOfT.cs
- RoleExceptions.cs
- followingsibling.cs
- SegmentInfo.cs
- DataGridRow.cs
- AttachedPropertyMethodSelector.cs
- AxImporter.cs
- _FixedSizeReader.cs
- Grid.cs
- XmlExtensionFunction.cs
- GifBitmapEncoder.cs
- CachingHintValidation.cs
- FixedSOMElement.cs
- RuntimeTransactionHandle.cs
- XmlStringTable.cs
- BooleanStorage.cs
- RegexReplacement.cs
- WebPartPersonalization.cs
- SimpleExpression.cs
- NotSupportedException.cs
- InvalidComObjectException.cs
- CompilationSection.cs
- TextTreeInsertUndoUnit.cs
- ClientApiGenerator.cs
- DropShadowBitmapEffect.cs
- QueryPageSettingsEventArgs.cs
- XmlSchemaChoice.cs
- UserControl.cs
- SimpleTextLine.cs
- TypeUsage.cs
- QilVisitor.cs
- SoapObjectInfo.cs
- CalendarAutoFormatDialog.cs
- CommonGetThemePartSize.cs
- RbTree.cs
- LineMetrics.cs
- WeakReference.cs
- AbstractSvcMapFileLoader.cs
- GlyphsSerializer.cs
- StringHelper.cs
- IndexedEnumerable.cs
- CompoundFileIOPermission.cs
- Decimal.cs
- IList.cs
- IDictionary.cs
- LocalizationComments.cs
- CurrentChangingEventManager.cs