ALFA.MySQLDatabaseInternal.ConnectDatabase C# (CSharp) Method

ConnectDatabase() private method

Connect a dedicated connection to the database.
private ConnectDatabase ( ) : void
return void
        private void ConnectDatabase()
        {
            if (Connection != null)
            {
                try
                {
                    if (Connection.State != System.Data.ConnectionState.Open)
                    {
                        Logger.Log("MySQLDatabaseInternal.ConnectDatabase: Reconnecting to the database...");
                        Connection.Open();
                        FailedQueries = 0;
                        return;
                    }
                    else if (FailedQueries >= FAILED_QUERY_LIMIT)
                    {
                        Logger.Log("MySQLDatabaseInternal.ConnectDatabase: Too many consecutive failed queries, abandoning existing connection.");
                        Connection.Dispose();
                        Connection = null;
                    }
                    else if ((FailedQueries > 0) || (((uint)Environment.TickCount - LastQueryTick) >= QUERY_PING_LIMIT))
                    {
                        if (FailedQueries > 0)
                            Logger.Log("MySQLDatabaseInternal.ConnectDatabase: Confirming database aliveness with ping after a failed query...");

                        if (Connection.Ping())
                        {
                            LastQueryTick = (uint)Environment.TickCount;
                            return;
                        }

                        Logger.Log("MySQLDatabaseInternal.ConnectDatabase: Connection failed ping, forcing reconnect...");
                        Connection.Dispose();
                        Connection = null;
                    }
                    else
                    {
                        return;
                    }
                }
                catch (Exception e)
                {
                    Logger.Log("MySQLDatabaseInternal.ConnectDatabase: Trying new connection due to exception opening existing connection: {0}", e);
                    Connection.Dispose();
                    Connection = null;
                }
            }

            Logger.Log("MySQLDatabaseInternal.ConnectDatabase: Connecting to the database...");

            MySqlConnection NewConnection = new MySqlConnection(ConnectionString);
            bool Succeeded = false;

            try
            {
                NewConnection.Open();
                Succeeded = true;
                FailedQueries = 0;
                LastQueryTick = (uint)Environment.TickCount;
            }
            finally
            {
                if (!Succeeded)
                    NewConnection.Dispose();
                else
                    Connection = NewConnection;
            }
        }