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
- HeaderUtility.cs
- EntityDataSourceEntityTypeFilterItem.cs
- ProcessThreadCollection.cs
- oledbconnectionstring.cs
- ViewGenerator.cs
- ZoomComboBox.cs
- RangeValuePattern.cs
- HttpPostedFile.cs
- ExpressionStringBuilder.cs
- CustomWebEventKey.cs
- AlignmentXValidation.cs
- CustomCategoryAttribute.cs
- ColorConverter.cs
- InitializationEventAttribute.cs
- QilParameter.cs
- OdbcCommand.cs
- Util.cs
- ContentElement.cs
- WindowsScrollBarBits.cs
- MD5CryptoServiceProvider.cs
- UpdatePanelTrigger.cs
- EntityConnectionStringBuilder.cs
- InputQueue.cs
- AdapterUtil.cs
- XmlSchemaAnnotated.cs
- SecurityKeyEntropyMode.cs
- SqlProvider.cs
- StylusPointCollection.cs
- SortedSetDebugView.cs
- DesignerOptionService.cs
- FormClosedEvent.cs
- XmlKeywords.cs
- SystemException.cs
- WorkflowApplicationEventArgs.cs
- _NtlmClient.cs
- ComponentCollection.cs
- BamlBinaryWriter.cs
- Funcletizer.cs
- FakeModelItemImpl.cs
- PointAnimationUsingKeyFrames.cs
- Byte.cs
- XmlDataSourceView.cs
- AssociationType.cs
- CodeThrowExceptionStatement.cs
- ImportStoreException.cs
- Hyperlink.cs
- SlotInfo.cs
- AssemblyHash.cs
- StaticSiteMapProvider.cs
- BackgroundWorker.cs
- UrlPropertyAttribute.cs
- ConfigXmlSignificantWhitespace.cs
- Debug.cs
- PeerToPeerException.cs
- KnownBoxes.cs
- TextMessageEncodingBindingElement.cs
- SecUtil.cs
- CheckBox.cs
- SolidColorBrush.cs
- HttpClientChannel.cs
- CrossSiteScriptingValidation.cs
- ChangePassword.cs
- CommentAction.cs
- FixedSOMPageConstructor.cs
- ResXResourceWriter.cs
- DynamicArgumentDesigner.xaml.cs
- _ConnectStream.cs
- PrintDialogException.cs
- ObjectListFieldsPage.cs
- SubMenuStyleCollectionEditor.cs
- SectionUpdates.cs
- FileDialog.cs
- TextContainerChangeEventArgs.cs
- SecurityVersion.cs
- CodeNamespaceCollection.cs
- LinqDataSourceContextEventArgs.cs
- ClientScriptItemCollection.cs
- SHA512Managed.cs
- PrintPreviewGraphics.cs
- Decimal.cs
- UnionCodeGroup.cs
- MachineKeyValidationConverter.cs
- SelectionBorderGlyph.cs
- Typography.cs
- ConfigurationErrorsException.cs
- XmlSchemaParticle.cs
- TerminatorSinks.cs
- AttachedPropertyBrowsableAttribute.cs
- Operator.cs
- BridgeDataReader.cs
- SwitchAttribute.cs
- UIAgentMonitorHandle.cs
- IISUnsafeMethods.cs
- ImageIndexEditor.cs
- DataContractJsonSerializer.cs
- MulticastNotSupportedException.cs
- Accessors.cs
- ControlDesigner.cs
- AttributeInfo.cs
- FtpRequestCacheValidator.cs