public override void Open() { if (this.State == ConnectionState.Open) { throw new InvalidOperationException(Resources.ConnectionAlreadyOpen); } this.SetState(ConnectionState.Connecting, true); if (this.settings.AutoEnlist && (Transaction.Current != null)) { this.driver = DriverTransactionManager.GetDriverInTransaction(Transaction.Current); if ((this.driver != null) && (this.driver.IsInActiveUse || !this.driver.Settings.EquivalentTo(this.Settings))) { throw new NotSupportedException(Resources.MultipleConnectionsInTransactionNotSupported); } } try { if (this.settings.Pooling) { MySqlPool pool = MySqlPoolManager.GetPool(this.settings); if (this.driver == null) { this.driver = pool.GetConnection(); } this.procedureCache = pool.ProcedureCache; } else { if (this.driver == null) { this.driver = Driver.Create(this.settings); } this.procedureCache = new Shaiya.Extended.Server.MySql.Data.MySqlClient.ProcedureCache((int)this.settings.ProcedureCacheSize); } } catch (Exception) { this.SetState(ConnectionState.Closed, true); throw; } this.SetState(ConnectionState.Open, false); this.driver.Configure(this); if ((this.settings.Database != null) && (this.settings.Database != string.Empty)) { this.ChangeDatabase(this.settings.Database); } if (this.driver.Version.isAtLeast(5, 0, 0)) { this.schemaProvider = new ISSchemaProvider(this); } else { this.schemaProvider = new SchemaProvider(this); } this.perfMonitor = new PerformanceMonitor(this); if ((Transaction.Current != null) && this.settings.AutoEnlist) { this.EnlistTransaction(Transaction.Current); } this.hasBeenOpen = true; this.SetState(ConnectionState.Open, true); }
public MySqlPool(MySqlConnectionStringBuilder settings) { this.minSize = settings.MinimumPoolSize; this.maxSize = settings.MaximumPoolSize; this.available = (int)this.maxSize; this.autoEvent = new AutoResetEvent(false); if (this.minSize > this.maxSize) { this.minSize = this.maxSize; } this.settings = settings; this.inUsePool = new List <Driver>((int)this.maxSize); this.idlePool = new Queue <Driver>((int)this.maxSize); for (int i = 0; i < this.minSize; i++) { this.idlePool.Enqueue(this.CreateNewPooledConnection()); } this.procedureCache = new Shaiya.Extended.Server.MySql.Data.MySqlClient.ProcedureCache((int)settings.ProcedureCacheSize); this.beingCleared = false; }
public MySqlPool(MySqlConnectionStringBuilder settings) { this.minSize = settings.MinimumPoolSize; this.maxSize = settings.MaximumPoolSize; this.available = (int) this.maxSize; this.autoEvent = new AutoResetEvent(false); if (this.minSize > this.maxSize) { this.minSize = this.maxSize; } this.settings = settings; this.inUsePool = new List<Driver>((int) this.maxSize); this.idlePool = new Queue<Driver>((int) this.maxSize); for (int i = 0; i < this.minSize; i++) { this.idlePool.Enqueue(this.CreateNewPooledConnection()); } this.procedureCache = new Shaiya.Extended.Server.MySql.Data.MySqlClient.ProcedureCache((int) settings.ProcedureCacheSize); this.beingCleared = false; }
public override void Open() { if( this.State == ConnectionState.Open ) { throw new InvalidOperationException( Resources.ConnectionAlreadyOpen ); } this.SetState( ConnectionState.Connecting, true ); if( this.settings.AutoEnlist && ( Transaction.Current != null ) ) { this.driver = DriverTransactionManager.GetDriverInTransaction( Transaction.Current ); if( ( this.driver != null ) && ( this.driver.IsInActiveUse || !this.driver.Settings.EquivalentTo( this.Settings ) ) ) { throw new NotSupportedException( Resources.MultipleConnectionsInTransactionNotSupported ); } } try { if( this.settings.Pooling ) { MySqlPool pool = MySqlPoolManager.GetPool( this.settings ); if( this.driver == null ) { this.driver = pool.GetConnection(); } this.procedureCache = pool.ProcedureCache; } else { if( this.driver == null ) { this.driver = Driver.Create( this.settings ); } this.procedureCache = new Shaiya.Extended.Server.MySql.Data.MySqlClient.ProcedureCache( (int)this.settings.ProcedureCacheSize ); } } catch( Exception ) { this.SetState( ConnectionState.Closed, true ); throw; } this.SetState( ConnectionState.Open, false ); this.driver.Configure( this ); if( ( this.settings.Database != null ) && ( this.settings.Database != string.Empty ) ) { this.ChangeDatabase( this.settings.Database ); } if( this.driver.Version.isAtLeast( 5, 0, 0 ) ) { this.schemaProvider = new ISSchemaProvider( this ); } else { this.schemaProvider = new SchemaProvider( this ); } this.perfMonitor = new PerformanceMonitor( this ); if( ( Transaction.Current != null ) && this.settings.AutoEnlist ) { this.EnlistTransaction( Transaction.Current ); } this.hasBeenOpen = true; this.SetState( ConnectionState.Open, true ); }