missing error handling added

This commit is contained in:
Torsten Harenberg
2025-02-28 14:59:31 +01:00
parent 49058adbfd
commit 4ed3ce9b10
7 changed files with 265 additions and 147 deletions

70
tui.go
View File

@@ -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