- dbh := get_db_handle()
- if err := validate_mysql_version(dbh); err != nil {
- log.Fatal(err)
- }
-
- var state state.State
- var wi wait_info.WaitInfo
- wi.SetWaitInterval(time.Second)
-
- sigChan := make(chan os.Signal, 1)
- done := make(chan struct{})
- defer close(done)
- termboxChan := new_tb_chan()
-
- signal.Notify(sigChan, syscall.SIGINT, syscall.SIGTERM)
-
- state.Setup(dbh)
-
- finished := false
- for !finished {
- select {
- case <-done:
- fmt.Println("exiting")
- finished = true
- case sig := <-sigChan:
- fmt.Println("Caught a signal", sig)
- done <- struct{}{}
- case <-wi.WaitNextPeriod():
- state.Collect()
- wi.CollectedNow()
- state.Display()
- case event := <-termboxChan:
- // switch on event type
- switch event.Type {
- case termbox.EventKey: // actions depend on key
- switch event.Key {
- case termbox.KeyCtrlZ, termbox.KeyCtrlC, termbox.KeyEsc:
- finished = true
- case termbox.KeyArrowLeft: // left arrow change to previous display mode
- state.DisplayPrevious()
- state.Display()
- case termbox.KeyTab, termbox.KeyArrowRight: // tab or right arrow - change to next display mode
- state.DisplayNext()
- state.Display()
- }
- switch event.Ch {
- case '-': // decrease the interval if > 1
- if wi.WaitInterval() > time.Second {
- wi.SetWaitInterval(wi.WaitInterval() - time.Second)
- }
- case '+': // increase interval by creating a new ticker
- wi.SetWaitInterval(wi.WaitInterval() + time.Second)
- case 'h', '?': // help
- state.SetHelp(!state.Help())
- case 'q': // quit
- finished = true
- case 't': // toggle between absolute/relative statistics
- state.SetWantRelativeStats(!state.WantRelativeStats())
- state.Display()
- case 'z': // reset the statistics to now by taking a query of current values
- state.ResetDBStatistics()
- state.Display()
- }
- case termbox.EventResize: // set sizes
- state.ScreenSetSize(event.Width, event.Height)
- state.Display()
- case termbox.EventError: // quit
- log.Fatalf("Quitting because of termbox error: \n%s\n", event.Err)
+ if *flag_host != "" || *flag_socket != "" {
+ lib.Logger.Println("--host= or --socket= defined")
+ var components = make(map[string]string)
+ if *flag_host != "" && *flag_socket != "" {
+ fmt.Println(lib.MyName() + ": Do not specify --host and --socket together")
+ os.Exit(1)
+ }
+ if *flag_host != "" {
+ components["host"] = *flag_host
+ }
+ if *flag_port != 0 {
+ if *flag_socket == "" {
+ components["port"] = fmt.Sprintf("%d", *flag_port)
+ } else {
+ fmt.Println(lib.MyName() + ": Do not specify --socket and --port together")
+ os.Exit(1)