Code:
/ 4.0 / 4.0 / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / fx / src / tx / System / Transactions / EnlistmentState.cs / 1305376 / EnlistmentState.cs
//------------------------------------------------------------------------------ //// Copyright (c) Microsoft Corporation. All rights reserved. // //----------------------------------------------------------------------------- namespace System.Transactions { using System; using System.Diagnostics; using System.Globalization; using System.Threading; using System.Transactions.Diagnostics; // Base class for all enlistment states abstract class EnlistmentState { internal abstract void EnterState( InternalEnlistment enlistment ); internal static EnlistmentStatePromoted _enlistmentStatePromoted; // Object for synchronizing access to the entire class( avoiding lock( typeof( ... )) ) private static object classSyncObject; // Helper object for static synchronization private static object ClassSyncObject { get { if( classSyncObject == null ) { object o = new object(); Interlocked.CompareExchange( ref classSyncObject, o, null ); } return classSyncObject; } } internal static EnlistmentStatePromoted _EnlistmentStatePromoted { get { if (_enlistmentStatePromoted == null) { lock (ClassSyncObject) { if (_enlistmentStatePromoted == null) { EnlistmentStatePromoted temp = new EnlistmentStatePromoted(); Thread.MemoryBarrier(); _enlistmentStatePromoted = temp; } } } return _enlistmentStatePromoted; } } internal virtual void EnlistmentDone( InternalEnlistment enlistment ) { throw TransactionException.CreateEnlistmentStateException( SR.GetString( SR.TraceSourceLtm ), null ); } internal virtual void Prepared( InternalEnlistment enlistment ) { throw TransactionException.CreateEnlistmentStateException( SR.GetString( SR.TraceSourceLtm ), null ); } internal virtual void ForceRollback( InternalEnlistment enlistment, Exception e ) { throw TransactionException.CreateEnlistmentStateException( SR.GetString( SR.TraceSourceLtm ), null ); } internal virtual void Committed( InternalEnlistment enlistment ) { throw TransactionException.CreateEnlistmentStateException( SR.GetString( SR.TraceSourceLtm ), null ); } internal virtual void Aborted( InternalEnlistment enlistment, Exception e ) { throw TransactionException.CreateEnlistmentStateException( SR.GetString( SR.TraceSourceLtm ), null ); } internal virtual void InDoubt( InternalEnlistment enlistment, Exception e ) { throw TransactionException.CreateEnlistmentStateException( SR.GetString( SR.TraceSourceLtm ), null ); } internal virtual byte[] RecoveryInformation( InternalEnlistment enlistment ) { throw TransactionException.CreateEnlistmentStateException( SR.GetString( SR.TraceSourceLtm ), null ); } internal virtual void InternalAborted( InternalEnlistment enlistment ) { Debug.Assert( false, string.Format( null, "Invalid Event for InternalEnlistment State; Current State: {0}", this.GetType() )); throw TransactionException.CreateEnlistmentStateException( SR.GetString( SR.TraceSourceLtm ), null ); } internal virtual void InternalCommitted( InternalEnlistment enlistment ) { Debug.Assert( false, string.Format( null, "Invalid Event for InternalEnlistment State; Current State: {0}", this.GetType() )); throw TransactionException.CreateEnlistmentStateException( SR.GetString( SR.TraceSourceLtm ), null ); } internal virtual void InternalIndoubt( InternalEnlistment enlistment ) { Debug.Assert( false, string.Format( null, "Invalid Event for InternalEnlistment State; Current State: {0}", this.GetType() )); throw TransactionException.CreateEnlistmentStateException( SR.GetString( SR.TraceSourceLtm ), null ); } internal virtual void ChangeStateCommitting( InternalEnlistment enlistment ) { Debug.Assert( false, string.Format( null, "Invalid Event for InternalEnlistment State; Current State: {0}", this.GetType() )); throw TransactionException.CreateEnlistmentStateException( SR.GetString( SR.TraceSourceLtm ), null ); } internal virtual void ChangeStatePromoted( InternalEnlistment enlistment, IPromotedEnlistment promotedEnlistment ) { Debug.Assert( false, string.Format( null, "Invalid Event for InternalEnlistment State; Current State: {0}", this.GetType() )); throw TransactionException.CreateEnlistmentStateException( SR.GetString( SR.TraceSourceLtm ), null ); } internal virtual void ChangeStateDelegated( InternalEnlistment enlistment ) { Debug.Assert( false, string.Format( null, "Invalid Event for InternalEnlistment State; Current State: {0}", this.GetType() )); throw TransactionException.CreateEnlistmentStateException( SR.GetString( SR.TraceSourceLtm ), null ); } internal virtual void ChangeStatePreparing( InternalEnlistment enlistment ) { Debug.Assert( false, string.Format( null, "Invalid Event for InternalEnlistment State; Current State: {0}", this.GetType() )); throw TransactionException.CreateEnlistmentStateException( SR.GetString( SR.TraceSourceLtm ), null ); } internal virtual void ChangeStateSinglePhaseCommit( InternalEnlistment enlistment ) { Debug.Assert( false, string.Format( null, "Invalid Event for InternalEnlistment State; Current State: {0}", this.GetType() )); throw TransactionException.CreateEnlistmentStateException( SR.GetString( SR.TraceSourceLtm ), null ); } } internal class EnlistmentStatePromoted : EnlistmentState { internal override void EnterState( InternalEnlistment enlistment ) { enlistment.State = this; } internal override void EnlistmentDone( InternalEnlistment enlistment ) { Monitor.Exit( enlistment.SyncRoot ); try { enlistment.PromotedEnlistment.EnlistmentDone(); } finally { #pragma warning disable 0618 //@ Monitor.Enter(enlistment.SyncRoot); #pragma warning restore 0618 } } internal override void Prepared( InternalEnlistment enlistment ) { Monitor.Exit( enlistment.SyncRoot ); try { enlistment.PromotedEnlistment.Prepared(); } finally { #pragma warning disable 0618 //@ Monitor.Enter(enlistment.SyncRoot); #pragma warning restore 0618 } } internal override void ForceRollback( InternalEnlistment enlistment, Exception e ) { Monitor.Exit( enlistment.SyncRoot ); try { enlistment.PromotedEnlistment.ForceRollback( e ); } finally { #pragma warning disable 0618 //@ Monitor.Enter(enlistment.SyncRoot); #pragma warning restore 0618 } } internal override void Committed( InternalEnlistment enlistment ) { Monitor.Exit( enlistment.SyncRoot ); try { enlistment.PromotedEnlistment.Committed(); } finally { #pragma warning disable 0618 //@ Monitor.Enter(enlistment.SyncRoot); #pragma warning restore 0618 } } internal override void Aborted( InternalEnlistment enlistment, Exception e ) { Monitor.Exit( enlistment.SyncRoot ); try { enlistment.PromotedEnlistment.Aborted( e ); } finally { #pragma warning disable 0618 //@ Monitor.Enter(enlistment.SyncRoot); #pragma warning restore 0618 } } internal override void InDoubt( InternalEnlistment enlistment, Exception e ) { Monitor.Exit( enlistment.SyncRoot ); try { enlistment.PromotedEnlistment.InDoubt( e ); } finally { #pragma warning disable 0618 //@ Monitor.Enter(enlistment.SyncRoot); #pragma warning restore 0618 } } internal override byte[] RecoveryInformation( InternalEnlistment enlistment ) { Monitor.Exit( enlistment.SyncRoot ); try { return enlistment.PromotedEnlistment.GetRecoveryInformation(); } finally { #pragma warning disable 0618 //@ Monitor.Enter(enlistment.SyncRoot); #pragma warning restore 0618 } } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. //------------------------------------------------------------------------------ //// Copyright (c) Microsoft Corporation. All rights reserved. // //----------------------------------------------------------------------------- namespace System.Transactions { using System; using System.Diagnostics; using System.Globalization; using System.Threading; using System.Transactions.Diagnostics; // Base class for all enlistment states abstract class EnlistmentState { internal abstract void EnterState( InternalEnlistment enlistment ); internal static EnlistmentStatePromoted _enlistmentStatePromoted; // Object for synchronizing access to the entire class( avoiding lock( typeof( ... )) ) private static object classSyncObject; // Helper object for static synchronization private static object ClassSyncObject { get { if( classSyncObject == null ) { object o = new object(); Interlocked.CompareExchange( ref classSyncObject, o, null ); } return classSyncObject; } } internal static EnlistmentStatePromoted _EnlistmentStatePromoted { get { if (_enlistmentStatePromoted == null) { lock (ClassSyncObject) { if (_enlistmentStatePromoted == null) { EnlistmentStatePromoted temp = new EnlistmentStatePromoted(); Thread.MemoryBarrier(); _enlistmentStatePromoted = temp; } } } return _enlistmentStatePromoted; } } internal virtual void EnlistmentDone( InternalEnlistment enlistment ) { throw TransactionException.CreateEnlistmentStateException( SR.GetString( SR.TraceSourceLtm ), null ); } internal virtual void Prepared( InternalEnlistment enlistment ) { throw TransactionException.CreateEnlistmentStateException( SR.GetString( SR.TraceSourceLtm ), null ); } internal virtual void ForceRollback( InternalEnlistment enlistment, Exception e ) { throw TransactionException.CreateEnlistmentStateException( SR.GetString( SR.TraceSourceLtm ), null ); } internal virtual void Committed( InternalEnlistment enlistment ) { throw TransactionException.CreateEnlistmentStateException( SR.GetString( SR.TraceSourceLtm ), null ); } internal virtual void Aborted( InternalEnlistment enlistment, Exception e ) { throw TransactionException.CreateEnlistmentStateException( SR.GetString( SR.TraceSourceLtm ), null ); } internal virtual void InDoubt( InternalEnlistment enlistment, Exception e ) { throw TransactionException.CreateEnlistmentStateException( SR.GetString( SR.TraceSourceLtm ), null ); } internal virtual byte[] RecoveryInformation( InternalEnlistment enlistment ) { throw TransactionException.CreateEnlistmentStateException( SR.GetString( SR.TraceSourceLtm ), null ); } internal virtual void InternalAborted( InternalEnlistment enlistment ) { Debug.Assert( false, string.Format( null, "Invalid Event for InternalEnlistment State; Current State: {0}", this.GetType() )); throw TransactionException.CreateEnlistmentStateException( SR.GetString( SR.TraceSourceLtm ), null ); } internal virtual void InternalCommitted( InternalEnlistment enlistment ) { Debug.Assert( false, string.Format( null, "Invalid Event for InternalEnlistment State; Current State: {0}", this.GetType() )); throw TransactionException.CreateEnlistmentStateException( SR.GetString( SR.TraceSourceLtm ), null ); } internal virtual void InternalIndoubt( InternalEnlistment enlistment ) { Debug.Assert( false, string.Format( null, "Invalid Event for InternalEnlistment State; Current State: {0}", this.GetType() )); throw TransactionException.CreateEnlistmentStateException( SR.GetString( SR.TraceSourceLtm ), null ); } internal virtual void ChangeStateCommitting( InternalEnlistment enlistment ) { Debug.Assert( false, string.Format( null, "Invalid Event for InternalEnlistment State; Current State: {0}", this.GetType() )); throw TransactionException.CreateEnlistmentStateException( SR.GetString( SR.TraceSourceLtm ), null ); } internal virtual void ChangeStatePromoted( InternalEnlistment enlistment, IPromotedEnlistment promotedEnlistment ) { Debug.Assert( false, string.Format( null, "Invalid Event for InternalEnlistment State; Current State: {0}", this.GetType() )); throw TransactionException.CreateEnlistmentStateException( SR.GetString( SR.TraceSourceLtm ), null ); } internal virtual void ChangeStateDelegated( InternalEnlistment enlistment ) { Debug.Assert( false, string.Format( null, "Invalid Event for InternalEnlistment State; Current State: {0}", this.GetType() )); throw TransactionException.CreateEnlistmentStateException( SR.GetString( SR.TraceSourceLtm ), null ); } internal virtual void ChangeStatePreparing( InternalEnlistment enlistment ) { Debug.Assert( false, string.Format( null, "Invalid Event for InternalEnlistment State; Current State: {0}", this.GetType() )); throw TransactionException.CreateEnlistmentStateException( SR.GetString( SR.TraceSourceLtm ), null ); } internal virtual void ChangeStateSinglePhaseCommit( InternalEnlistment enlistment ) { Debug.Assert( false, string.Format( null, "Invalid Event for InternalEnlistment State; Current State: {0}", this.GetType() )); throw TransactionException.CreateEnlistmentStateException( SR.GetString( SR.TraceSourceLtm ), null ); } } internal class EnlistmentStatePromoted : EnlistmentState { internal override void EnterState( InternalEnlistment enlistment ) { enlistment.State = this; } internal override void EnlistmentDone( InternalEnlistment enlistment ) { Monitor.Exit( enlistment.SyncRoot ); try { enlistment.PromotedEnlistment.EnlistmentDone(); } finally { #pragma warning disable 0618 //@ Monitor.Enter(enlistment.SyncRoot); #pragma warning restore 0618 } } internal override void Prepared( InternalEnlistment enlistment ) { Monitor.Exit( enlistment.SyncRoot ); try { enlistment.PromotedEnlistment.Prepared(); } finally { #pragma warning disable 0618 //@ Monitor.Enter(enlistment.SyncRoot); #pragma warning restore 0618 } } internal override void ForceRollback( InternalEnlistment enlistment, Exception e ) { Monitor.Exit( enlistment.SyncRoot ); try { enlistment.PromotedEnlistment.ForceRollback( e ); } finally { #pragma warning disable 0618 //@ Monitor.Enter(enlistment.SyncRoot); #pragma warning restore 0618 } } internal override void Committed( InternalEnlistment enlistment ) { Monitor.Exit( enlistment.SyncRoot ); try { enlistment.PromotedEnlistment.Committed(); } finally { #pragma warning disable 0618 //@ Monitor.Enter(enlistment.SyncRoot); #pragma warning restore 0618 } } internal override void Aborted( InternalEnlistment enlistment, Exception e ) { Monitor.Exit( enlistment.SyncRoot ); try { enlistment.PromotedEnlistment.Aborted( e ); } finally { #pragma warning disable 0618 //@ Monitor.Enter(enlistment.SyncRoot); #pragma warning restore 0618 } } internal override void InDoubt( InternalEnlistment enlistment, Exception e ) { Monitor.Exit( enlistment.SyncRoot ); try { enlistment.PromotedEnlistment.InDoubt( e ); } finally { #pragma warning disable 0618 //@ Monitor.Enter(enlistment.SyncRoot); #pragma warning restore 0618 } } internal override byte[] RecoveryInformation( InternalEnlistment enlistment ) { Monitor.Exit( enlistment.SyncRoot ); try { return enlistment.PromotedEnlistment.GetRecoveryInformation(); } finally { #pragma warning disable 0618 //@ Monitor.Enter(enlistment.SyncRoot); #pragma warning restore 0618 } } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007.
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- DataBoundControlHelper.cs
- Win32Exception.cs
- SmiMetaData.cs
- DataSetUtil.cs
- Panel.cs
- StrokeDescriptor.cs
- AttachedPropertyMethodSelector.cs
- TextBoxDesigner.cs
- RegexFCD.cs
- RecognizeCompletedEventArgs.cs
- ExpressionPrefixAttribute.cs
- TransformGroup.cs
- GridViewItemAutomationPeer.cs
- LoadedEvent.cs
- DataGridColumn.cs
- HttpPostedFile.cs
- StringComparer.cs
- PageCatalogPartDesigner.cs
- MouseGestureConverter.cs
- UnsafeNativeMethods.cs
- BamlResourceSerializer.cs
- GeneralTransform3DGroup.cs
- ResXFileRef.cs
- IChannel.cs
- InputElement.cs
- SamlSecurityTokenAuthenticator.cs
- PenLineCapValidation.cs
- SimpleRecyclingCache.cs
- QuaternionKeyFrameCollection.cs
- ProcessMessagesAsyncResult.cs
- CheckBox.cs
- CachedTypeface.cs
- ListSourceHelper.cs
- DataServiceProviderMethods.cs
- Section.cs
- WebPartEditVerb.cs
- SoapSchemaExporter.cs
- _ContextAwareResult.cs
- XmlDataContract.cs
- ResourceContainer.cs
- HiddenFieldPageStatePersister.cs
- MdImport.cs
- SizeValueSerializer.cs
- QueryCoreOp.cs
- PathFigureCollection.cs
- PreservationFileWriter.cs
- LineServicesCallbacks.cs
- IUnknownConstantAttribute.cs
- DataFormats.cs
- SizeChangedEventArgs.cs
- ObjectSelectorEditor.cs
- BitmapPalettes.cs
- FixedSOMTextRun.cs
- PathFigure.cs
- Validator.cs
- UnaryOperationBinder.cs
- DbSourceParameterCollection.cs
- WindowInteractionStateTracker.cs
- HtmlLabelAdapter.cs
- AccessDataSourceView.cs
- NumberFormatInfo.cs
- XmlReflectionMember.cs
- CollectionConverter.cs
- QueryOperator.cs
- EventSinkHelperWriter.cs
- TimerExtension.cs
- DrawToolTipEventArgs.cs
- util.cs
- StyleHelper.cs
- ExpressionEditor.cs
- SchemaNames.cs
- XmlImplementation.cs
- PageContentCollection.cs
- RadioButtonRenderer.cs
- XmlILAnnotation.cs
- Propagator.cs
- SqlDataSource.cs
- SmiContextFactory.cs
- AdornerLayer.cs
- RectangleGeometry.cs
- KeyboardDevice.cs
- DescendantBaseQuery.cs
- Mapping.cs
- MemberPath.cs
- TableLayoutCellPaintEventArgs.cs
- Operators.cs
- FileEnumerator.cs
- ParallelEnumerable.cs
- OleDbDataReader.cs
- DiagnosticStrings.cs
- WindowsFormsHostAutomationPeer.cs
- MimeParameterWriter.cs
- SlotInfo.cs
- NetworkStream.cs
- RepeaterItemCollection.cs
- OdbcCommand.cs
- XslTransform.cs
- CacheOutputQuery.cs
- SpoolingTaskBase.cs
- DataSysAttribute.cs