X-Git-Url: http://git.iain.cx/?a=blobdiff_plain;f=app%2Fapp.go;h=358813301b539a8c6ac170366ff7d3031f622b57;hb=10dbb38516c6ac149373ac0fae917a34ab7a9afa;hp=32abd428b19bc568783099519a1b37068e14a8f1;hpb=c700d5ed2270495e774df6e7acf29bd69e70171a;p=pstop.git diff --git a/app/app.go b/app/app.go index 32abd42..3588133 100644 --- a/app/app.go +++ b/app/app.go @@ -1,6 +1,6 @@ -// lib - library routines for pstop. +// app - pstop application package // -// this file contains the library routines related to the stored state in pstop. +// This file contains the library routines related to running the app. package app import ( @@ -45,7 +45,7 @@ const ( ) var ( - re_valid_version = regexp.MustCompile(`^(5\.[67]\.|10\.[01])`) + re_valid_version = regexp.MustCompile(`^(5\.[67]\.|10\.[01])`) ) type App struct { @@ -53,7 +53,6 @@ type App struct { sigChan chan os.Signal wi wait_info.WaitInfo finished bool - datadir string dbh *sql.DB help bool hostname string @@ -75,13 +74,11 @@ func (app *App) Setup(dbh *sql.DB) { app.dbh = dbh if err := app.validate_mysql_version(); err != nil { - log.Fatal(err) - } + log.Fatal(err) + } app.finished = false - app.screen.Initialise() - app.setup_instruments = setup_instruments.NewSetupInstruments(dbh) app.setup_instruments.EnableMonitoring() @@ -100,11 +97,11 @@ func (app *App) Setup(dbh *sql.DB) { app.tiwsbt.SetWantRelativeStats(app.want_relative_stats) app.tiwsbt.SetNow() app.users.SetWantRelativeStats(app.want_relative_stats) // ignored - app.users.SetNow() // ignored + app.users.SetNow() // ignored app.essgben.SetWantRelativeStats(app.want_relative_stats) app.essgben.SetNow() app.ewsgben.SetWantRelativeStats(app.want_relative_stats) // ignored - app.ewsgben.SetNow() // ignored + app.ewsgben.SetNow() // ignored app.ResetDBStatistics() @@ -118,10 +115,8 @@ func (app *App) Setup(dbh *sql.DB) { hostname = hostname[0:index] } _, mysql_version := lib.SelectGlobalVariableByVariableName(app.dbh, "VERSION") - _, datadir := lib.SelectGlobalVariableByVariableName(app.dbh, "DATADIR") app.SetHostname(hostname) app.SetMySQLVersion(mysql_version) - app.SetDatadir(datadir) } // have we finished ? @@ -182,10 +177,6 @@ func (app App) MySQLVersion() string { return app.mysql_version } -func (app App) Datadir() string { - return app.datadir -} - func (app *App) SetHelp(newHelp bool) { app.help = newHelp @@ -193,10 +184,6 @@ func (app *App) SetHelp(newHelp bool) { app.screen.Flush() } -func (app *App) SetDatadir(datadir string) { - app.datadir = datadir -} - func (app *App) SetMySQLVersion(mysql_version string) { app.mysql_version = mysql_version } @@ -509,18 +496,6 @@ func (app *App) Cleanup() { } } -// make chan for termbox events and run a poller to send events to the channel -// - return the channel -func new_tb_chan() chan termbox.Event { - termboxChan := make(chan termbox.Event) - go func() { - for { - termboxChan <- termbox.PollEvent() - } - }() - return termboxChan -} - // get into a run loop func (app *App) Run() { app.done = make(chan struct{}) @@ -531,7 +506,7 @@ func (app *App) Run() { app.wi.SetWaitInterval(time.Second) - termboxChan := new_tb_chan() + termboxChan := app.screen.TermBoxChan() for !app.Finished() { select { @@ -590,36 +565,37 @@ func (app *App) Run() { // rather than giving an error message if the requires P_S tables can't // be found. func (app *App) validate_mysql_version() error { - var tables = [...]string{ - "performance_schema.events_waits_summary_global_by_event_name", - "performance_schema.file_summary_by_instance", - "performance_schema.table_io_waits_summary_by_table", - "performance_schema.table_lock_waits_summary_by_table", - } - - lib.Logger.Println("validate_mysql_version()") - - lib.Logger.Println("- Getting MySQL version") - err, mysql_version := lib.SelectGlobalVariableByVariableName(app.dbh, "VERSION") - if err != nil { - return err - } - lib.Logger.Println("- mysql_version: '" + mysql_version + "'") - - if !re_valid_version.MatchString(mysql_version) { - return errors.New(lib.MyName() + " does not work with MySQL version " + mysql_version) - } - lib.Logger.Println("OK: MySQL version is valid, continuing") - - lib.Logger.Println("Checking access to required tables:") - for i := range tables { - if err := lib.CheckTableAccess(app.dbh, tables[i]); err == nil { - lib.Logger.Println("OK: " + tables[i] + " found") - } else { - return err - } - } - lib.Logger.Println("OK: all table checks passed") - - return nil + var tables = [...]string{ + "performance_schema.events_stages_summary_global_by_event_name", + "performance_schema.events_waits_summary_global_by_event_name", + "performance_schema.file_summary_by_instance", + "performance_schema.table_io_waits_summary_by_table", + "performance_schema.table_lock_waits_summary_by_table", + } + + lib.Logger.Println("validate_mysql_version()") + + lib.Logger.Println("- Getting MySQL version") + err, mysql_version := lib.SelectGlobalVariableByVariableName(app.dbh, "VERSION") + if err != nil { + return err + } + lib.Logger.Println("- mysql_version: '" + mysql_version + "'") + + if !re_valid_version.MatchString(mysql_version) { + return errors.New(lib.MyName() + " does not work with MySQL version " + mysql_version) + } + lib.Logger.Println("OK: MySQL version is valid, continuing") + + lib.Logger.Println("Checking access to required tables:") + for i := range tables { + if err := lib.CheckTableAccess(app.dbh, tables[i]); err == nil { + lib.Logger.Println("OK: " + tables[i] + " found") + } else { + return err + } + } + lib.Logger.Println("OK: all table checks passed") + + return nil }