X-Git-Url: https://gerrit.automotivelinux.org/gerrit/gitweb?a=blobdiff_plain;f=main.go;h=8d1e0eb5b7e07673dfd0fbc52035128c01084aac;hb=100450bf7c827826c305cbab0fb00e81bdcd1c77;hp=a6f8104e0e3081e467893386469bea1e6b9846ca;hpb=04040c928142db92d2ef2d4b43ad4701392e5ceb;p=src%2Fxds%2Fxds-cli.git diff --git a/main.go b/main.go index a6f8104..8d1e0eb 100644 --- a/main.go +++ b/main.go @@ -26,6 +26,7 @@ import ( "regexp" "sort" "strings" + "syscall" "text/tabwriter" "gerrit.automotivelinux.org/gerrit/src/xds/xds-agent.git/lib/xaapiv1" @@ -33,7 +34,6 @@ import ( "github.com/Sirupsen/logrus" "github.com/joho/godotenv" - socketio_client "github.com/sebd71/go-socket.io-client" "github.com/urfave/cli" ) @@ -71,8 +71,8 @@ var EnvConfFileMap map[string]string // HTTPCli Global variable that hold HTTP Client var HTTPCli *common.HTTPClient -// IOsk Global variable that hold SocketIo client -var IOsk *socketio_client.Client +// IOSkClient Global variable that hold SocketIo client +var IOSkClient *IOSockClient // exitError exists this program with the specified error func exitError(code int, f string, a ...interface{}) { @@ -96,6 +96,14 @@ func earlyDisplay() { earlyDebug = []string{} } +// LogSillyf Logging helper used for silly logging (printed on log.debug) +func LogSillyf(format string, args ...interface{}) { + sillyVal, sillyLog := os.LookupEnv("XDS_LOG_SILLY") + if sillyLog && sillyVal == "1" { + Log.Debugf("SILLY: "+format, args...) + } +} + // main func main() { @@ -317,6 +325,20 @@ func main() { // Start signals monitoring routine MonitorSignals() + // Default callback to handle interrupt signal + // Maybe be overwritten by some subcommand (eg. targets commands) + err := OnSignals(func(sig os.Signal) { + Log.Debugf("Send signal %v (from main)", sig) + if IsInterruptSignal(sig) { + err := cli.NewExitError("Interrupted\n", int(syscall.EINTR)) + cli.HandleExitCoder(err) + } + }) + if err != nil { + cli.NewExitError(err.Error(), 1) + return + } + // Run the cli app app.Run(os.Args) } @@ -382,23 +404,17 @@ func XdsConnInit(ctx *cli.Context) error { // Create io Websocket client Log.Debugln("Connecting IO.socket client on ", agentURL) - opts := &socketio_client.Options{ - Transport: "websocket", - Header: make(map[string][]string), - } - opts.Header["XDS-AGENT-SID"] = []string{HTTPCli.GetClientID()} - - IOsk, err = socketio_client.NewClient(agentURL, opts) + IOSkClient, err = NewIoSocketClient(agentURL, HTTPCli.GetClientID()) if err != nil { - return cli.NewExitError("IO.socket connection error: "+err.Error(), 1) + return cli.NewExitError(err.Error(), 1) } - IOsk.On("error", func(err error) { + IOSkClient.On("error", func(err error) { fmt.Println("ERROR Websocket: ", err.Error()) }) ctx.App.Metadata["httpCli"] = HTTPCli - ctx.App.Metadata["ioskCli"] = IOsk + ctx.App.Metadata["ioskCli"] = IOSkClient // Display version in logs (debug helpers) ver := xaapiv1.XDSVersion{}