Code:
/ 4.0 / 4.0 / 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. //------------------------------------------------------------------------------ //// 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
- XAMLParseException.cs
- ComboBoxRenderer.cs
- FtpCachePolicyElement.cs
- WindowsRebar.cs
- ScriptResourceInfo.cs
- FacetDescriptionElement.cs
- ProjectionCamera.cs
- ResolveDuplexCD1AsyncResult.cs
- ConfigDefinitionUpdates.cs
- RenderingEventArgs.cs
- PasswordPropertyTextAttribute.cs
- Enlistment.cs
- WorkflowRuntimeBehavior.cs
- BamlLocalizerErrorNotifyEventArgs.cs
- Group.cs
- FacetValues.cs
- DataContractSerializerFaultFormatter.cs
- DynamicPropertyHolder.cs
- BadImageFormatException.cs
- UdpSocket.cs
- BaseInfoTable.cs
- ProtocolsSection.cs
- BoundField.cs
- ContentPropertyAttribute.cs
- SmtpTransport.cs
- RoleManagerSection.cs
- FixedTextView.cs
- HtmlCalendarAdapter.cs
- SingleConverter.cs
- NamespaceInfo.cs
- CodeGeneratorOptions.cs
- CollectionViewGroupRoot.cs
- StickyNoteAnnotations.cs
- OleDbConnectionFactory.cs
- EntitySetBase.cs
- HtmlMeta.cs
- PrinterUnitConvert.cs
- WebDisplayNameAttribute.cs
- RSAPKCS1SignatureFormatter.cs
- HttpServerUtilityBase.cs
- ThemeDirectoryCompiler.cs
- RadioButtonPopupAdapter.cs
- XmlDataLoader.cs
- SamlAdvice.cs
- CodeGenerator.cs
- OrderPreservingSpoolingTask.cs
- ItemsControl.cs
- SqlVersion.cs
- CodeSubDirectoriesCollection.cs
- MethodBody.cs
- UpdateTracker.cs
- PerfService.cs
- PersonalizableAttribute.cs
- RegisteredHiddenField.cs
- Quaternion.cs
- ArrayEditor.cs
- UpDownBase.cs
- cryptoapiTransform.cs
- AttributeEmitter.cs
- objectquery_tresulttype.cs
- ListViewEditEventArgs.cs
- CodeIterationStatement.cs
- SymbolTable.cs
- FindCriteriaApril2005.cs
- HiddenFieldDesigner.cs
- SmtpAuthenticationManager.cs
- DataControlFieldHeaderCell.cs
- Label.cs
- DragStartedEventArgs.cs
- PackagePartCollection.cs
- RefExpr.cs
- CommandLibraryHelper.cs
- SmtpException.cs
- Converter.cs
- QualificationDataItem.cs
- RowToParametersTransformer.cs
- TypeElement.cs
- FormsIdentity.cs
- EntityDataSourceWrapperPropertyDescriptor.cs
- ReceiveReply.cs
- PropertyChangedEventManager.cs
- XmlAttributeAttribute.cs
- SemaphoreSecurity.cs
- SqlBinder.cs
- SignedXml.cs
- ConnectionStringSettings.cs
- Delegate.cs
- WebPartDisplayModeCancelEventArgs.cs
- FontFamilyValueSerializer.cs
- PageOutputColor.cs
- Array.cs
- NoClickablePointException.cs
- AnnotationHelper.cs
- WebPartConnectVerb.cs
- RemotingException.cs
- XmlDigitalSignatureProcessor.cs
- SqlDataSourceEnumerator.cs
- RegionInfo.cs
- CallbackException.cs
- DataGridViewDesigner.cs