Example #1
0
 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);
 }
Example #2
0
 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;
 }
Example #3
0
 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;
 }
Example #4
0
		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 );
		}