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
- Latin1Encoding.cs
- FontNamesConverter.cs
- BaseValidatorDesigner.cs
- FtpWebResponse.cs
- Zone.cs
- DbMetaDataFactory.cs
- StrokeRenderer.cs
- AssociationEndMember.cs
- ThreadAttributes.cs
- CqlIdentifiers.cs
- Queue.cs
- ConnectionsZone.cs
- DoubleCollectionValueSerializer.cs
- ObjectDataSourceDisposingEventArgs.cs
- DateTimeValueSerializer.cs
- XmlHierarchyData.cs
- ReadOnlyAttribute.cs
- ItemsControl.cs
- ServicePointManagerElement.cs
- MetadataItemEmitter.cs
- ImplicitInputBrush.cs
- TcpStreams.cs
- DownloadProgressEventArgs.cs
- PointConverter.cs
- OdbcTransaction.cs
- Timer.cs
- BinaryHeap.cs
- ProfileParameter.cs
- TimersDescriptionAttribute.cs
- EnumMember.cs
- TextMetrics.cs
- __ComObject.cs
- Matrix3DConverter.cs
- OracleLob.cs
- KeyPressEvent.cs
- ApplicationSecurityManager.cs
- HandlerMappingMemo.cs
- Model3DCollection.cs
- WriteableBitmap.cs
- PermissionListSet.cs
- SHA256Managed.cs
- AsymmetricKeyExchangeDeformatter.cs
- OptionUsage.cs
- SystemDropShadowChrome.cs
- Sentence.cs
- AccessDataSource.cs
- XmlHelper.cs
- EdmTypeAttribute.cs
- HashSetEqualityComparer.cs
- connectionpool.cs
- ChannelSinkStacks.cs
- DbParameterHelper.cs
- XmlPreloadedResolver.cs
- BitSet.cs
- Timeline.cs
- SecurityManager.cs
- MemberHolder.cs
- DataListItemEventArgs.cs
- ParserExtension.cs
- HorizontalAlignConverter.cs
- PropertyBuilder.cs
- ConfigXmlWhitespace.cs
- DbgUtil.cs
- XamlLoadErrorInfo.cs
- UidManager.cs
- ProvidersHelper.cs
- Int32.cs
- RegistrationServices.cs
- SQLBinary.cs
- CompilerCollection.cs
- ClientConvert.cs
- Int32RectValueSerializer.cs
- FirstMatchCodeGroup.cs
- WebPartVerbsEventArgs.cs
- PublisherIdentityPermission.cs
- ObjectListTitleAttribute.cs
- WebMessageEncoderFactory.cs
- DetailsViewDeleteEventArgs.cs
- HtmlValidatorAdapter.cs
- _RegBlobWebProxyDataBuilder.cs
- EncoderParameters.cs
- ArithmeticException.cs
- StringResourceManager.cs
- MemberPath.cs
- Header.cs
- LinkedResource.cs
- DataColumn.cs
- CellCreator.cs
- RenderDataDrawingContext.cs
- DataGridViewCheckBoxColumn.cs
- TrailingSpaceComparer.cs
- SoapServerMessage.cs
- GridViewRowEventArgs.cs
- PathData.cs
- FactoryRecord.cs
- PaginationProgressEventArgs.cs
- ExpressionNode.cs
- DataBindingExpressionBuilder.cs
- InternalMappingException.cs
- DataGridViewImageColumn.cs