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
- MetadataCacheItem.cs
- ServiceOperationListItemList.cs
- HtmlImage.cs
- Stack.cs
- StringUtil.cs
- GridViewEditEventArgs.cs
- InvalidPrinterException.cs
- Image.cs
- ToolStripItemClickedEventArgs.cs
- LayoutInformation.cs
- WpfWebRequestHelper.cs
- EventLogPermissionEntry.cs
- SqlUserDefinedAggregateAttribute.cs
- SlipBehavior.cs
- RuntimeHandles.cs
- EastAsianLunisolarCalendar.cs
- AnimationException.cs
- ConfigurationPermission.cs
- UrlMappingsSection.cs
- XPathAxisIterator.cs
- BindToObject.cs
- AuthenticationManager.cs
- TextEmbeddedObject.cs
- ErrorLog.cs
- _FtpDataStream.cs
- PackagePartCollection.cs
- ContextStack.cs
- TextBoxView.cs
- Helpers.cs
- TablePatternIdentifiers.cs
- ClaimTypes.cs
- Currency.cs
- Typography.cs
- SmiMetaDataProperty.cs
- DesignerHelpers.cs
- DataRow.cs
- AudioLevelUpdatedEventArgs.cs
- templategroup.cs
- ProfessionalColors.cs
- RelationshipDetailsRow.cs
- IndexedGlyphRun.cs
- DataControlFieldCollection.cs
- WorkflowDurableInstance.cs
- MultipartContentParser.cs
- ExpressionBinding.cs
- Rfc2898DeriveBytes.cs
- XPathDocumentIterator.cs
- DllNotFoundException.cs
- DataGridViewTextBoxEditingControl.cs
- ArrayElementGridEntry.cs
- TreeNodeEventArgs.cs
- InternalMappingException.cs
- ElementsClipboardData.cs
- Point3DCollectionValueSerializer.cs
- hwndwrapper.cs
- BamlMapTable.cs
- TableLayoutStyleCollection.cs
- DataProtection.cs
- TextEvent.cs
- TextSelection.cs
- DataSourceProvider.cs
- TypeCollectionDesigner.xaml.cs
- MasterPageCodeDomTreeGenerator.cs
- ObjectSet.cs
- FrameworkContentElementAutomationPeer.cs
- _FixedSizeReader.cs
- HostProtectionException.cs
- IdentityValidationException.cs
- ApplicationDirectory.cs
- TextInfo.cs
- DialogWindow.cs
- IdentityHolder.cs
- DecimalKeyFrameCollection.cs
- SqlColumnizer.cs
- DeclarativeCatalogPart.cs
- TextTreeInsertElementUndoUnit.cs
- JapaneseCalendar.cs
- RectangleGeometry.cs
- OptionUsage.cs
- TypefaceCollection.cs
- DetailsViewDeleteEventArgs.cs
- GeneralTransform2DTo3DTo2D.cs
- CreationContext.cs
- KeyGesture.cs
- XmlSequenceWriter.cs
- PageDeviceFont.cs
- ModuleBuilderData.cs
- XmlDataProvider.cs
- Size.cs
- SpellerError.cs
- ObjectViewListener.cs
- IsolatedStorage.cs
- DataGridViewCellToolTipTextNeededEventArgs.cs
- sqlpipe.cs
- FilePrompt.cs
- keycontainerpermission.cs
- GroupBox.cs
- DetailsViewPageEventArgs.cs
- SimpleApplicationHost.cs
- ResXResourceReader.cs