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
- FileDialog.cs
- MetadataPropertyAttribute.cs
- SystemIPGlobalStatistics.cs
- ZipIOLocalFileBlock.cs
- MatchSingleFxEngineOpcode.cs
- OleDbParameterCollection.cs
- XamlInt32CollectionSerializer.cs
- AuthenticationModuleElement.cs
- XmlArrayItemAttribute.cs
- OleDbEnumerator.cs
- AssemblySettingAttributes.cs
- GraphicsContainer.cs
- ResourceDictionary.cs
- SocketStream.cs
- Msmq3PoisonHandler.cs
- MetadataArtifactLoaderComposite.cs
- RangeValidator.cs
- Utility.cs
- ReflectionUtil.cs
- PropertyConverter.cs
- TreeIterators.cs
- ContextInformation.cs
- Window.cs
- AuthenticationSection.cs
- ObjectDataSourceMethodEditor.cs
- MsmqAppDomainProtocolHandler.cs
- LoginCancelEventArgs.cs
- DefaultAssemblyResolver.cs
- DbConnectionStringCommon.cs
- OdbcErrorCollection.cs
- EncodingConverter.cs
- SchemaNames.cs
- SqlParameterizer.cs
- X509ClientCertificateCredentialsElement.cs
- Int32Storage.cs
- ViewStateModeByIdAttribute.cs
- DiagnosticSection.cs
- FontUnitConverter.cs
- ResourceDictionaryCollection.cs
- BodyGlyph.cs
- CompilerWrapper.cs
- ErrorsHelper.cs
- DetailsViewRowCollection.cs
- ValidatorCompatibilityHelper.cs
- CodeTypeParameter.cs
- _ConnectionGroup.cs
- SqlDataSourceCache.cs
- ListControlBuilder.cs
- WebSysDescriptionAttribute.cs
- RegularExpressionValidator.cs
- ToolStripRenderer.cs
- TextWriter.cs
- AudioFormatConverter.cs
- Attributes.cs
- ActivationServices.cs
- DiagnosticSection.cs
- ItemList.cs
- ParentQuery.cs
- FilteredXmlReader.cs
- HttpServerVarsCollection.cs
- CustomCredentialPolicy.cs
- precedingquery.cs
- Html32TextWriter.cs
- StateMachineWorkflowInstance.cs
- CustomLineCap.cs
- TreeNodeStyle.cs
- Cell.cs
- EllipseGeometry.cs
- Visual3DCollection.cs
- DbMetaDataCollectionNames.cs
- DefaultValueTypeConverter.cs
- HtmlListAdapter.cs
- ComponentEditorForm.cs
- BamlReader.cs
- DbModificationClause.cs
- WSTrustDec2005.cs
- DbConnectionPoolCounters.cs
- ClonableStack.cs
- DayRenderEvent.cs
- TextPointer.cs
- LinqExpressionNormalizer.cs
- BaseAsyncResult.cs
- EdmConstants.cs
- HotSpotCollection.cs
- cookiecontainer.cs
- ContextBase.cs
- WindowsPrincipal.cs
- TracePayload.cs
- prompt.cs
- MethodBody.cs
- AlternationConverter.cs
- SecurityMode.cs
- TextSelection.cs
- MarshalDirectiveException.cs
- SafeBitVector32.cs
- HtmlSelect.cs
- TextWriterTraceListener.cs
- DetailsViewUpdateEventArgs.cs
- CodeAssignStatement.cs
- DefaultParameterValueAttribute.cs