public void InitializeConnection(uint MinimumRequiredSchema)
        {
            string Host     = Properties.Settings.Default.DatabaseHost;
            string User     = Properties.Settings.Default.DatabaseUser;
            string Password = Properties.Settings.Default.DatabasePassword;
            string Schema   = Properties.Settings.Default.DatabaseSchema;

            string ConnectString = BuildConnectString(Host, User, Password, Schema);

            try
            {
                MySqlConnection connection = new MySqlConnection(ConnectString);
                connection.StateChange += MySqlConnection_StateChange;
                connection.Open();
                mDatabaseHost = Host;
                mConnection   = connection;
                mConnStr      = ConnectString;

                DbOpVerifySchema schema_request = new DbOpVerifySchema(MinimumRequiredSchema);
                schema_request.OnVerificationCompleted += DbOpGetSchemaInfo_OnVerificationCompleted;
                BeginExecuteRequest(schema_request);
            }
            catch (MySqlException)
            {
                if (OnConnectionInitialized != null)
                {
                    OnConnectionInitialized(ConnectResult.InvalidConnection);
                }
            }
        }
        void mDatabaseThread_DoWork(object sender, DoWorkEventArgs e)
        {
            while (!mCancellationTokenSource.IsCancellationRequested)
            {
                IDbRequest request = null;
                try
                {
                    Utility.Log.LogString("Database thread waiting for request");
                    request = mDatabaseQueue.Take(mCancellationTokenSource.Token);

                    Utility.Log.LogFormat("Database thread dequeued request of type {0}", request.GetType().Name);
                    DbOpVerifySchema schema_request = new DbOpVerifySchema(FFRKProxy.Instance.MinimumRequiredSchema);
                    ProcessDbRequestOnThisThread(schema_request);

                    if (schema_request.Result != DbOpVerifySchema.VerificationResult.OK)
                    {
                        Utility.Log.LogString("Schema verification failed.  Disabling database connectivity.");
                        mConnectionState = ConnectionState.Disabled;
                        if (OnSchemaError != null)
                        {
                            OnSchemaError(TranslateSchemaVerificationResult(schema_request.Result));
                        }

                        if (OnConnectionStateChanged != null)
                        {
                            OnConnectionStateChanged(mConnectionState);
                        }
                        Shutdown();
                    }
                    else
                    {
                        ProcessDbRequestOnThisThread(request);
                    }
                }
                catch (OperationCanceledException)
                {
                    Utility.Log.LogString("Database worker thread shutting down because cancellation was requested.");
                }
                catch (Exception ex)
                {
                    Utility.Log.LogFormat("Database worker thread encountered an unknown exception.  {0}\n{1}", ex.Message, ex.StackTrace);
                }
            }
            Utility.Log.LogString("Database worker thread exiting.");
        }
        public ConnectResult TestConnect(string Host, string User, string Password, string Schema, uint MinimumRequiredSchema)
        {
            string          ConnectString = BuildConnectString(Host, User, Password, Schema);
            MySqlConnection connection    = null;

            try
            {
                connection = new MySqlConnection(ConnectString);
                connection.Open();

                DbOpVerifySchema schema_request = new DbOpVerifySchema(MinimumRequiredSchema);
                schema_request.Execute(connection, null);
                DbOpVerifySchema.VerificationResult result = schema_request.Result;
                return(TranslateSchemaVerificationResult(result));
            }
            finally
            {
                if (connection != null)
                {
                    connection.Close();
                }
            }
        }
Beispiel #4
0
 private ConnectResult TranslateSchemaVerificationResult(DbOpVerifySchema.VerificationResult Result)
 {
     switch (Result)
     {
         case DbOpVerifySchema.VerificationResult.DatabaseTooOld:
             return ConnectResult.SchemaTooOld;
         case DbOpVerifySchema.VerificationResult.DatabaseTooNew:
             return ConnectResult.SchemaTooNew;
         default:
             return ConnectResult.Success;
     }
 }
Beispiel #5
0
        void mDatabaseThread_DoWork(object sender, DoWorkEventArgs e)
        {
            while (!mCancellationTokenSource.IsCancellationRequested)
            {
                IDbRequest request = null;
                try
                {
                    Utility.Log.LogString("Database thread waiting for request");
                    request = mDatabaseQueue.Take(mCancellationTokenSource.Token);

                    Utility.Log.LogFormat("Database thread dequeued request of type {0}", request.GetType().Name);
                    DbOpVerifySchema schema_request = new DbOpVerifySchema(FFRKProxy.Instance.MinimumRequiredSchema);
                    ProcessDbRequestOnThisThread(schema_request);

                    if (schema_request.Result != DbOpVerifySchema.VerificationResult.OK)
                    {
                        Utility.Log.LogString("Schema verification failed.  Disabling database connectivity.");
                        mConnectionState = ConnectionState.Disabled;
                        if (OnSchemaError != null)
                            OnSchemaError(TranslateSchemaVerificationResult(schema_request.Result));

                        if (OnConnectionStateChanged != null)
                            OnConnectionStateChanged(mConnectionState);
                        Shutdown();
                    }
                    else
                        ProcessDbRequestOnThisThread(request);
                }
                catch (OperationCanceledException)
                {
                    Utility.Log.LogString("Database worker thread shutting down because cancellation was requested.");
                }
                catch(Exception ex)
                {
                    Utility.Log.LogFormat("Database worker thread encountered an unknown exception.  {0}\n{1}", ex.Message, ex.StackTrace);
                }
            }
            Utility.Log.LogString("Database worker thread exiting.");
        }
Beispiel #6
0
        void DbOpGetSchemaInfo_OnVerificationCompleted(DbOpVerifySchema.VerificationResult VerificationResult)
        {
            ConnectResult result = TranslateSchemaVerificationResult(VerificationResult);
            if (result != ConnectResult.Success)
            {
                mDatabaseDisabled = true;
                mConnectionState = ConnectionState.Disabled;
                if (OnConnectionStateChanged != null)
                    OnConnectionStateChanged(mConnectionState);
            }

            if (OnConnectionInitialized != null)
                OnConnectionInitialized(result);
        }
Beispiel #7
0
        public ConnectResult TestConnect(string Host, string User, string Password, string Schema, uint MinimumRequiredSchema)
        {
            string ConnectString = BuildConnectString(Host, User, Password, Schema);
            MySqlConnection connection = null;
            try
            {
                connection = new MySqlConnection(ConnectString);
                connection.Open();

                DbOpVerifySchema schema_request = new DbOpVerifySchema(MinimumRequiredSchema);
                schema_request.Execute(connection, null);
                DbOpVerifySchema.VerificationResult result = schema_request.Result;
                return TranslateSchemaVerificationResult(result);
            }
            finally
            {
                if (connection != null)
                    connection.Close();
            }
        }
Beispiel #8
0
        public void InitializeConnection(uint MinimumRequiredSchema)
        {
            string Host = Properties.Settings.Default.DatabaseHost;
            string User = Properties.Settings.Default.DatabaseUser;
            string Password = Properties.Settings.Default.DatabasePassword;
            string Schema = Properties.Settings.Default.DatabaseSchema;

            string ConnectString = BuildConnectString(Host, User, Password, Schema);

            try
            {
                MySqlConnection connection = new MySqlConnection(ConnectString);
                connection.StateChange += MySqlConnection_StateChange;
                connection.Open();
                mDatabaseHost = Host;
                mConnection = connection;
                mConnStr = ConnectString;

                DbOpVerifySchema schema_request = new DbOpVerifySchema(MinimumRequiredSchema);
                schema_request.OnVerificationCompleted += DbOpGetSchemaInfo_OnVerificationCompleted;
                BeginExecuteRequest(schema_request);
            }
            catch (MySqlException)
            {
                if (OnConnectionInitialized != null)
                    OnConnectionInitialized(ConnectResult.InvalidConnection);
            }
        }