Code:
/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / cdf / src / WF / RunTime / Hosting / SharedConnectionInfo.cs / 1305376 / SharedConnectionInfo.cs
//------------------------------------------------------------------------------
//
// Copyright (c) Microsoft Corporation. All rights reserved.
//
//-----------------------------------------------------------------------------
#region Using directives
using System;
using System.Diagnostics;
using System.Transactions;
using System.Data.Common;
using System.Threading;
#endregion
namespace System.Workflow.Runtime.Hosting
{
///
/// This class keeps the following associated with a Transaction
/// - a connection that participates in the transaction.
/// - an optional local transaction (DbTransaction) generated from the single-phase-committed Transaction.
/// The connection and the local transaction are passed around to different host components to
/// do transacted DB work using the shared connection.
///
internal sealed class SharedConnectionInfo : IDisposable
{
readonly DbConnection connection;
readonly DbTransaction localTransaction;
private bool disposed;
private ManualResetEvent handle;
#region Constructor
///
/// Instantiate an opened connection enlisted to the Transaction
/// if promotable is false, the Transaction wraps a local
/// transaction inside and can never be promoted
///
///
///
///
internal SharedConnectionInfo(
DbResourceAllocator dbResourceAllocator,
Transaction transaction,
bool wantPromotable,
ManualResetEvent handle)
{
Debug.Assert((transaction != null), "Null Transaction!");
if (null == handle)
throw new ArgumentNullException("handle");
this.handle = handle;
if (wantPromotable)
{
// Enlist a newly opened connection to this regular Transaction
this.connection = dbResourceAllocator.OpenNewConnection();
this.connection.EnlistTransaction(transaction);
}
else
{
// Make this transaction no longer promotable by attaching our
// IPromotableSinglePhaseNotification implementation (LocalTranscaction)
// and track the DbConnection and DbTransaction associated with the LocalTranscaction
LocalTransaction localTransaction = new LocalTransaction(dbResourceAllocator,handle);
transaction.EnlistPromotableSinglePhase(localTransaction);
this.connection = localTransaction.Connection;
this.localTransaction = localTransaction.Transaction;
}
}
#endregion Constructor
#region Accessors
internal DbConnection DBConnection
{
get { return this.connection; }
}
internal DbTransaction DBTransaction
{
get { return this.localTransaction; }
}
#endregion Accessors
#region IDisposable Members
public void Dispose()
{
Dispose(true);
GC.SuppressFinalize(this);
}
private void Dispose(bool disposing)
{
if (!this.disposed)
{
//
// If we're using a LocalTransaction it will close the connection
// in it's IPromotableSinglePhaseNotification methods
if ((this.localTransaction == null)&&(null != connection))
this.connection.Dispose();
}
this.disposed = true;
}
#endregion
}
}
// 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
- Line.cs
- XmlSchemaSubstitutionGroup.cs
- KeySplineConverter.cs
- UnhandledExceptionEventArgs.cs
- ConnectivityStatus.cs
- DesignerTransaction.cs
- DBCommand.cs
- DataBinder.cs
- Model3D.cs
- GraphicsState.cs
- XmlSchemaAttributeGroup.cs
- TextEditorParagraphs.cs
- SystemColors.cs
- DSACryptoServiceProvider.cs
- AnimationLayer.cs
- sqlser.cs
- TextEffect.cs
- EtwTrace.cs
- PageContent.cs
- Mapping.cs
- TabletDeviceInfo.cs
- TrackingProfile.cs
- DispatchWrapper.cs
- XmlWellformedWriter.cs
- WmlControlAdapter.cs
- ProtectedConfigurationProviderCollection.cs
- PersonalizationStateInfoCollection.cs
- HandledEventArgs.cs
- NegotiationTokenAuthenticator.cs
- WindowsRegion.cs
- TextContainer.cs
- ShadowGlyph.cs
- DataGridViewAdvancedBorderStyle.cs
- CultureTable.cs
- SchemaObjectWriter.cs
- XslException.cs
- MarginsConverter.cs
- InvalidContentTypeException.cs
- DefaultSerializationProviderAttribute.cs
- LocalizedNameDescriptionPair.cs
- MediaPlayer.cs
- Soap11ServerProtocol.cs
- TextServicesContext.cs
- RpcAsyncResult.cs
- XamlFilter.cs
- XmlDigitalSignatureProcessor.cs
- Models.cs
- StringValueSerializer.cs
- ScrollProperties.cs
- ApplicationException.cs
- OutputWindow.cs
- DataGridViewCellValidatingEventArgs.cs
- ObjectQuery_EntitySqlExtensions.cs
- MetadataArtifactLoaderXmlReaderWrapper.cs
- OciLobLocator.cs
- DbException.cs
- AVElementHelper.cs
- UnsafeMethods.cs
- ScriptingJsonSerializationSection.cs
- SpanIndex.cs
- AnimationLayer.cs
- XmlBinaryReader.cs
- NegotiateStream.cs
- PropertyChangingEventArgs.cs
- RemoteWebConfigurationHostStream.cs
- DataObjectAttribute.cs
- dbdatarecord.cs
- HwndKeyboardInputProvider.cs
- ScriptServiceAttribute.cs
- ObjectDataSourceDisposingEventArgs.cs
- SafeSecurityHelper.cs
- TypeBuilderInstantiation.cs
- AnnotationResourceCollection.cs
- TranslateTransform3D.cs
- ObjectDataSourceView.cs
- CodeDomSerializer.cs
- TraceLevelHelper.cs
- RTTrackingProfile.cs
- SymLanguageVendor.cs
- WindowsRichEditRange.cs
- OrderedDictionary.cs
- RawStylusInputCustomDataList.cs
- PropertyTabChangedEvent.cs
- OrderByBuilder.cs
- DataComponentNameHandler.cs
- AdapterUtil.cs
- ComNativeDescriptor.cs
- XmlKeywords.cs
- ResXResourceReader.cs
- XmlDownloadManager.cs
- CallbackHandler.cs
- PrinterResolution.cs
- XmlNodeChangedEventArgs.cs
- ReadOnlyDictionary.cs
- DocumentApplicationJournalEntry.cs
- dataobject.cs
- CompModSwitches.cs
- SafeEventLogWriteHandle.cs
- AuthenticationConfig.cs
- TransformerConfigurationWizardBase.cs