You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
84 lines
2.2 KiB
Go
84 lines
2.2 KiB
Go
package main
|
|
|
|
import (
|
|
"fmt"
|
|
"flag"
|
|
"time"
|
|
"log"
|
|
"os"
|
|
"context"
|
|
|
|
"github.com/therecipe/qt/widgets"
|
|
"github.com/jordanorelli/grpc-ui/lib/count"
|
|
"google.golang.org/grpc"
|
|
)
|
|
|
|
var (
|
|
info_log *log.Logger
|
|
error_log *log.Logger
|
|
)
|
|
|
|
func bg(label *widgets.QLabel) {
|
|
info_log.Println("bg goroutine started")
|
|
defer info_log.Println("bg goroutine exited")
|
|
|
|
time.Sleep(5*time.Second)
|
|
conn, err := grpc.Dial("localhost:9001", grpc.WithInsecure())
|
|
if err != nil {
|
|
label.SetText(fmt.Sprintf("error: %v", err))
|
|
return
|
|
}
|
|
|
|
req := count.NextRequest{Name: "example-param"}
|
|
client := count.NewCountClient(conn)
|
|
for range time.Tick(time.Second) {
|
|
reply, err := client.Next(context.TODO(), &req)
|
|
if err != nil {
|
|
label.SetText(fmt.Sprintf("error: %v", err))
|
|
continue
|
|
}
|
|
label.SetText(fmt.Sprintf("count: %v", reply.GetVal()))
|
|
}
|
|
|
|
label.SetText(fmt.Sprintf("Connection: %v", conn))
|
|
}
|
|
|
|
func main() {
|
|
var options struct {
|
|
infoLogPath string
|
|
errorLogPath string
|
|
}
|
|
flag.StringVar(&options.infoLogPath, "info-log", "count-client.log", "file path of an info log")
|
|
flag.StringVar(&options.errorLogPath, "error-log", "count-client.log", "file path of an error log")
|
|
flag.Parse()
|
|
|
|
{
|
|
f, err := os.OpenFile(options.infoLogPath, os.O_WRONLY|os.O_APPEND|os.O_CREATE, 0644)
|
|
if err != nil {
|
|
panic(err)
|
|
}
|
|
info_log = log.New(f, "i ", log.LstdFlags)
|
|
}
|
|
|
|
{
|
|
f, err := os.OpenFile(options.errorLogPath, os.O_WRONLY|os.O_APPEND|os.O_CREATE, 0644)
|
|
if err != nil {
|
|
panic(err)
|
|
}
|
|
error_log = log.New(f, "e ", log.LstdFlags)
|
|
}
|
|
|
|
widgets.NewQApplication(len(os.Args), os.Args)
|
|
|
|
label := widgets.NewQLabel(nil, 0)
|
|
label.SetText("this is a label")
|
|
label.Show()
|
|
|
|
info_log.Println("spawning bg goroutine")
|
|
go bg(label)
|
|
|
|
info_log.Println("starting qapplication")
|
|
code := widgets.QApplication_Exec()
|
|
info_log.Printf("QApplication exited with code: %d\n", code)
|
|
os.Exit(code)
|
|
} |