missing error handling added
This commit is contained in:
70
tui.go
70
tui.go
@@ -1,23 +1,23 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"errors"
|
||||
"fmt"
|
||||
"github.com/TwiN/go-color"
|
||||
"github.com/jroimartin/gocui"
|
||||
"log"
|
||||
"strings"
|
||||
"time"
|
||||
"unicode"
|
||||
)
|
||||
|
||||
func printable(r rune) rune {
|
||||
if r == rune('\u000d') || r == rune('\u000a') { // ctrl-r or ctrl-n
|
||||
return rune('\u000a') //ctrl-n
|
||||
if r == '\u000d' || r == '\u000a' { // ctrl-r or ctrl-n
|
||||
return '\u000a' //ctrl-n
|
||||
}
|
||||
if unicode.IsGraphic(r) {
|
||||
return r
|
||||
}
|
||||
return rune('\u002e') // dot
|
||||
return '\u002e' // dot
|
||||
}
|
||||
|
||||
func Ternary(condition bool, valueIfTrue, valueIfFalse interface{}) interface{} {
|
||||
@@ -33,7 +33,7 @@ func layout(g *gocui.Gui) error {
|
||||
|
||||
// "data" view: Top-left large view
|
||||
if v, err := g.SetView("data", 0, 0, lwX-1, maxY/2-1); err != nil {
|
||||
if err != gocui.ErrUnknownView {
|
||||
if !errors.Is(err, gocui.ErrUnknownView) {
|
||||
return err
|
||||
}
|
||||
v.Title = "Data"
|
||||
@@ -43,7 +43,7 @@ func layout(g *gocui.Gui) error {
|
||||
|
||||
// "protocol" view: Bottom-left large view
|
||||
if v, err := g.SetView("protocol", 0, maxY/2, lwX-1, maxY-1); err != nil {
|
||||
if err != gocui.ErrUnknownView {
|
||||
if !errors.Is(err, gocui.ErrUnknownView) {
|
||||
return err
|
||||
}
|
||||
v.Title = "Protocol"
|
||||
@@ -53,7 +53,7 @@ func layout(g *gocui.Gui) error {
|
||||
|
||||
// "status" view: Smaller view on the right
|
||||
if v, err := g.SetView("status", lwX, 0, maxX-1, maxY-1); err != nil {
|
||||
if err != gocui.ErrUnknownView {
|
||||
if !errors.Is(err, gocui.ErrUnknownView) {
|
||||
return err
|
||||
}
|
||||
v.Title = "Status"
|
||||
@@ -79,10 +79,13 @@ func protocolUpdate(g *gocui.Gui) {
|
||||
g.Update(func(g *gocui.Gui) error {
|
||||
v, err := g.View("protocol")
|
||||
if err != nil {
|
||||
log.Println(err.Error())
|
||||
writeDebug(err.Error(), 0)
|
||||
return err
|
||||
}
|
||||
fmt.Fprint(v, msg)
|
||||
_, err = fmt.Fprint(v, msg)
|
||||
if err != nil {
|
||||
writeDebug(err.Error(), 0)
|
||||
}
|
||||
return nil
|
||||
})
|
||||
}
|
||||
@@ -93,32 +96,38 @@ func pactorUpdate(g *gocui.Gui) {
|
||||
if s.ToPactor.GetLen() > 0 {
|
||||
msg, err := s.ToPactor.Dequeue(256)
|
||||
if err != nil {
|
||||
log.Println(err.Error())
|
||||
writeDebug(err.Error(), 0)
|
||||
continue
|
||||
}
|
||||
g.Update(func(g *gocui.Gui) error {
|
||||
v, err := g.View("data")
|
||||
if err != nil {
|
||||
log.Println(err.Error())
|
||||
writeDebug(err.Error(), 0)
|
||||
return err
|
||||
}
|
||||
fmt.Fprint(v, strings.Map(printable, string(msg)))
|
||||
_, err = fmt.Fprint(v, strings.Map(printable, string(msg)))
|
||||
if err != nil {
|
||||
writeDebug(err.Error(), 0)
|
||||
}
|
||||
return nil
|
||||
})
|
||||
}
|
||||
if s.FromPactor.GetLen() > 0 {
|
||||
msg, err := s.FromPactor.Dequeue(256)
|
||||
if err != nil {
|
||||
log.Println(err.Error())
|
||||
writeDebug(err.Error(), 0)
|
||||
continue
|
||||
}
|
||||
g.Update(func(g *gocui.Gui) error {
|
||||
v, err := g.View("data")
|
||||
if err != nil {
|
||||
log.Println(err.Error())
|
||||
writeDebug(err.Error(), 0)
|
||||
return err
|
||||
}
|
||||
fmt.Fprint(v, color.InRed(strings.Map(printable, string(msg))))
|
||||
_, err = fmt.Fprint(v, color.InRed(strings.Map(printable, string(msg))))
|
||||
if err != nil {
|
||||
writeDebug(err.Error(), 0)
|
||||
}
|
||||
return nil
|
||||
})
|
||||
}
|
||||
@@ -132,25 +141,40 @@ func statusUpdate(g *gocui.Gui) {
|
||||
g.Update(func(g *gocui.Gui) error {
|
||||
v, err := g.View("status")
|
||||
if err != nil {
|
||||
log.Println(err.Error())
|
||||
writeDebug(err.Error(), 0)
|
||||
} else {
|
||||
v.Clear()
|
||||
fmt.Fprintln(v, time.Now().Format("15:04:05"))
|
||||
fmt.Fprintln(v, Ternary(s.VARAMode, "VARA", "TCP"))
|
||||
fmt.Fprintln(v, Ternary(s.Status&StatusTCPCmdActive != 0, color.InGreen("TCP CMD"), color.InRed("TCP CMD")))
|
||||
fmt.Fprintln(v, Ternary(s.Status&StatusTCPDataActive != 0, color.InGreen("TCP DATA"), color.InRed("TCP DATA")))
|
||||
fmt.Fprintln(v, fmt.Sprintf("\nCMD S: %d\nCMD R: %d\nDTA S: %d\nDTA R: %d", s.Command.Cmd.GetLen(), s.Command.Response.GetLen(), s.Data.Data.GetLen(), s.Data.Response.GetLen()))
|
||||
_, err := fmt.Fprintln(v, time.Now().Format("15:04:05"))
|
||||
if err != nil {
|
||||
writeDebug(err.Error(), 0)
|
||||
}
|
||||
_, err = fmt.Fprintln(v, Ternary(s.VARAMode, "VARA", "TCP"))
|
||||
if err != nil {
|
||||
writeDebug(err.Error(), 0)
|
||||
}
|
||||
_, err = fmt.Fprintln(v, Ternary(s.Status&StatusTCPCmdActive != 0, color.InGreen("TCP CMD"), color.InRed("TCP CMD")))
|
||||
if err != nil {
|
||||
writeDebug(err.Error(), 0)
|
||||
}
|
||||
_, err = fmt.Fprintln(v, Ternary(s.Status&StatusTCPDataActive != 0, color.InGreen("TCP DATA"), color.InRed("TCP DATA")))
|
||||
if err != nil {
|
||||
writeDebug(err.Error(), 0)
|
||||
}
|
||||
_, err = fmt.Fprintln(v, fmt.Sprintf("\nCMD S: %d\nCMD R: %d\nDTA S: %d\nDTA R: %d", s.Command.Cmd.GetLen(), s.Command.Response.GetLen(), s.Data.Data.GetLen(), s.Data.Response.GetLen()))
|
||||
if err != nil {
|
||||
writeDebug(err.Error(), 0)
|
||||
}
|
||||
}
|
||||
return nil
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
func quit(g *gocui.Gui, v *gocui.View) error {
|
||||
func quit(_ *gocui.Gui, _ *gocui.View) error {
|
||||
return gocui.ErrQuit
|
||||
}
|
||||
|
||||
func toggleMode(g *gocui.Gui, v *gocui.View) error {
|
||||
func toggleMode(_ *gocui.Gui, _ *gocui.View) error {
|
||||
s.Protocol <- fmt.Sprintf(color.InPurple("Toggle mode\n"))
|
||||
s.VARAMode = !s.VARAMode
|
||||
return nil
|
||||
|
Reference in New Issue
Block a user