Exemplo n.º 1
0
        public static void Cleanup()
        {
            try
            {
                if (EDDNComm != null)
                {
                    EDDNComm.Dispose();
                    EDDNComm = null;
                }

                if (JournalScanner != null)
                {
                    JournalScanner.Dispose();
                    JournalScanner = null;
                }

                if (DBCon != null)
                {
                    DBCon.Dispose();
                    DBCon = null;
                }

                // if EliteDBProcess is not null the process is created
                // by this program, so we also have to do the cleanup
                if ((EliteDBProcess != null) && (!EliteDBProcess.WasRunning))
                {
                    String user = IniFile.GetValue("DB_Connection", "User", "RN_User");
                    String pass = IniFile.GetValue("DB_Connection", "Pass", "Elite");

                    EliteDBProcess.StopServer(user, pass);
                    EliteDBProcess.Dispose();
                    EliteDBProcess = null;
                }

                Data.Dispose();


#if useVNC
                if (VNCAppServer != null)
                {
                    VNCAppServer.Stop();
                }
#endif

                //VNCServerThread = new System.Threading.Thread(new System.Threading.ThreadStart(s.Start));
            }
            catch (Exception ex)
            {
                throw new Exception("Error while cleaning up", ex);
            }
        }
Exemplo n.º 2
0
        /// <summary>
        /// starts the initialization of the global objects
        /// </summary>
        public static void Init()
        {
            try
            {
                if (!m_initDone)
                {
                    Program.SplashScreen.Logger = MainLog;

                    Program.SplashScreen.InfoAdd("initializing logger...");
                    Program.MainLog.Log("Initialising...\n");
                    Program.SplashScreen.InfoAppendLast("<OK>");

                    Program.SplashScreen.InfoAdd("starting sql server...");

                    // load settings from file
                    IniFile = new STA.Settings.INIFile(GetDataPath("ED-IBE.ini"), false, true);


                    // prepare architecture-dependend files
                    PrepareDepFiles();

                    // start database process (if not running)
                    DBProcess.DBProcessParams newProcessParams = new DBProcess.DBProcessParams()
                    {
                    };
                    newProcessParams.Commandline      = IniFile.GetValue("DB_Server", "Commandline", @"bin\mysqld.exe");
                    newProcessParams.Commandargs      = IniFile.GetValue("DB_Server", "CommandArgs", @"--defaults-file=Elite.ini --console");
                    newProcessParams.Workingdirectory = IniFile.GetValue("DB_Server", "WorkingDirectory", @"..\..\..\RNDatabase\Database");
                    newProcessParams.Port             = IniFile.GetValue <UInt16>("DB_Server", "Port", "3306");
                    newProcessParams.DBStartTimeout   = IniFile.GetValue <Int16>("DB_Server", "DBStartTimeout", "60");

                    Program.SplashScreen.InfoAppendLast("on port " + newProcessParams.Port + "...");

                    EliteDBProcess = new DBProcess(newProcessParams);

                    if (EliteDBProcess.WasRunning)
                    {
                        Program.SplashScreen.InfoAppendLast("already running...<OK>");
                    }
                    else
                    {
                        Program.SplashScreen.InfoAppendLast("<OK>");
                    }



                    // connecT to the database
                    Program.SplashScreen.InfoAdd("connect to sql server...");

                    DBConnector.ConnectionParams newConnectionParams = new DBConnector.ConnectionParams()
                    {
                    };

                    newConnectionParams.Name           = IniFile.GetValue("DB_Connection", "Name", "master");
                    newConnectionParams.Server         = IniFile.GetValue("DB_Connection", "Server", "localhost");
                    newConnectionParams.Port           = IniFile.GetValue <UInt16>("DB_Server", "Port", "3306");
                    newConnectionParams.Database       = IniFile.GetValue("DB_Connection", "Database", "Elite_DB");
                    newConnectionParams.User           = IniFile.GetValue("DB_Connection", "User", "RN_User");
                    newConnectionParams.Pass           = IniFile.GetValue("DB_Connection", "Pass", "Elite");
                    newConnectionParams.ConnectTimeout = IniFile.GetValue <Int16>("DB_Connection", "ConnectTimeout", "60");
                    newConnectionParams.StayAlive      = IniFile.GetValue <Boolean>("DB_Connection", "StayAlive", "false");
                    newConnectionParams.TimeOut        = IniFile.GetValue <Int16>("DB_Connection", "TimeOut", "10000");

                    DBCon = new DBConnector(newConnectionParams);

                    DBCon.Connect();

                    Program.SplashScreen.InfoAppendLast("<OK>");

                    /* **************** database is running ********************** */

                    /* perform updates */
                    Updater.DBUpdate();

                    if (DBCon.getIniValue <Boolean>(IBESettingsView.DB_GROUPNAME, "AutoMinimize", false.ToString(), false))
                    {
                        Program.SplashScreen.AutoMinimizeAsync();
                    }

                    Program.SplashScreen.InfoAdd("preparing global objects...");

                    // prepare colors-object
                    Colors = new GUIColors();

                    // preprare main data object
                    Data = new IBE.SQL.EliteDBIO();
                    Data.PrepareBaseTables();

                    // create global paths-object
                    //Paths                                       = new ProgramPaths();

                    // prepare settings
//                    Settings                                    = new Settings();
//                    Settings.BaseData                           = Data.BaseData;

                    // prepare commanders log
                    CommandersLog          = new CommandersLog();
                    CommandersLog.BaseData = Data.BaseData;

                    // prepare price analysis
                    PriceAnalysis          = new PriceAnalysis(new DBConnector(DBCon.ConfigData, true));
                    PriceAnalysis.BaseData = Data.BaseData;

                    //// starting the external data interface
                    //ExternalData                                = new ExternalDataInterface();

                    // Companion IO
                    CompanionIO = new IBECompanion.CompanionData(Program.GetDataPath());
                    if (CompanionIO.ConditionalLogIn())
                    {
                        CompanionIO.GetProfileDataAsync();
                    }

                    // initializing the object for the actual condition
                    actualCondition = new Condition();

                    // initializing the LogfileScanner
                    //LogfileScanner                              = new EDLogfileScanner();
                    JournalScanner = new EDJournalScanner();

                    // EDDN Interface
                    EDDNComm = new IBE.EDDN.EDDNCommunicator();

                    // EDSMComm Interface
                    EDSMComm = new IBE.EDSM.EDStarmapInterface(Program.DBCon);

                    CommandersLog.registerJournalScanner(JournalScanner);
                    CommandersLog.registerExternalTool(CompanionIO);

                    CompanionIO.registerJournalScanner(JournalScanner);

                    PriceAnalysis.registerJournalScanner(JournalScanner);
                    PriceAnalysis.registerExternalTool(CompanionIO);

                    EDSMComm.registerJournalScanner(JournalScanner);

                    actualCondition.RegisterJournalScanner(JournalScanner);
                    EDDNComm.RegisterJournalScanner(JournalScanner);


                    // Plausibility-Checker
                    PlausibiltyCheck = new PlausibiltyChecker();

                    /// early variant of DoSpecial();
                    Updater.DoSpecial_Early();

                    Program.SplashScreen.InfoAppendLast("<OK>");

                    m_initDone = true;
                }
            }
            catch (Exception ex)
            {
                CErr.processError(ex, "Error while initializing the program object");
            }
        }