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
- PositiveTimeSpanValidatorAttribute.cs
- DescendentsWalker.cs
- EntityStoreSchemaGenerator.cs
- SqlDataSourceQueryConverter.cs
- ValueProviderWrapper.cs
- ComplexPropertyEntry.cs
- FixedDSBuilder.cs
- TraceContextRecord.cs
- BooleanConverter.cs
- CodeDOMProvider.cs
- UserControlCodeDomTreeGenerator.cs
- MergeExecutor.cs
- XmlStreamStore.cs
- Rijndael.cs
- NoPersistHandle.cs
- ListViewPagedDataSource.cs
- PieceDirectory.cs
- SyncOperationState.cs
- PropertyMapper.cs
- StyleCollection.cs
- ListChangedEventArgs.cs
- EncryptedKey.cs
- DebuggerAttributes.cs
- RequestedSignatureDialog.cs
- SpellerError.cs
- InternalBase.cs
- SecurityTokenRequirement.cs
- MissingMethodException.cs
- SkinBuilder.cs
- AppModelKnownContentFactory.cs
- StorageConditionPropertyMapping.cs
- InstancePersistenceCommandException.cs
- BitmapMetadata.cs
- InternalCompensate.cs
- DatatypeImplementation.cs
- _RequestCacheProtocol.cs
- DbConvert.cs
- XmlCompatibilityReader.cs
- HandlerFactoryCache.cs
- CatalogPart.cs
- ForeignConstraint.cs
- TextTreeRootTextBlock.cs
- TextRangeEditLists.cs
- PolyBezierSegment.cs
- SqlRemoveConstantOrderBy.cs
- PointF.cs
- RefreshPropertiesAttribute.cs
- XhtmlBasicPhoneCallAdapter.cs
- ControlCollection.cs
- CodePrimitiveExpression.cs
- DataGridViewControlCollection.cs
- DataGridPagerStyle.cs
- altserialization.cs
- VirtualPathUtility.cs
- WebPartDisplayModeEventArgs.cs
- XmlSchemaAttributeGroup.cs
- _LazyAsyncResult.cs
- DataGridViewHeaderCell.cs
- OrderedDictionaryStateHelper.cs
- DBSchemaRow.cs
- DbReferenceCollection.cs
- EventMappingSettingsCollection.cs
- storepermission.cs
- FixedStringLookup.cs
- InvalidPipelineStoreException.cs
- WmlPanelAdapter.cs
- DataGridViewControlCollection.cs
- ObjectItemCollection.cs
- DBConcurrencyException.cs
- TreeNodeStyleCollectionEditor.cs
- BamlCollectionHolder.cs
- SHA256.cs
- CodeTypeReferenceExpression.cs
- TextEndOfSegment.cs
- StrongName.cs
- PerspectiveCamera.cs
- TerminatorSinks.cs
- MouseGestureValueSerializer.cs
- ISAPIWorkerRequest.cs
- NameValueFileSectionHandler.cs
- PathFigureCollectionValueSerializer.cs
- DoubleLinkListEnumerator.cs
- CatalogZoneBase.cs
- ClientFormsAuthenticationCredentials.cs
- SqlInternalConnection.cs
- SqlVisitor.cs
- Rijndael.cs
- WsrmMessageInfo.cs
- WebSysDescriptionAttribute.cs
- FrameworkReadOnlyPropertyMetadata.cs
- TextEditorSelection.cs
- AVElementHelper.cs
- DesignTimeDataBinding.cs
- TraceData.cs
- lengthconverter.cs
- WorkflowRuntimeSection.cs
- SessionStateModule.cs
- Point3D.cs
- EventLogTraceListener.cs
- TableMethodGenerator.cs