}
})
+ // Monitor XDS server configuration changes (and specifically connected status)
+ iosk.On(xaapiv1.EVTServerConfig, func(ev xaapiv1.EventMsg) {
+ svrCfg, err := ev.DecodeServerCfg()
+ if err == nil && !svrCfg.Connected {
+ // TODO: should wait that server will be connected back
+ if g.cbOnExit != nil {
+ g.cbOnExit(-1, fmt.Errorf("XDS Server disconnected"))
+ } else {
+ fmt.Printf("XDS Server disconnected")
+ os.Exit(-1)
+ }
+ }
+ })
+
+ args := xaapiv1.EventRegisterArgs{Name: xaapiv1.EVTServerConfig}
+ if err := g.httpCli.Post("/events/register", args, nil); err != nil {
+ return 0, err
+ }
+
return 0, nil
}
// except if XDS_GDBSERVER_OUTPUT_NOFIX is defined
_, gdbserverNoFix := os.LookupEnv("XDS_GDBSERVER_OUTPUT_NOFIX")
+ // SDK ID must be set else $GDB cannot be resolved
+ if g.sdkID == "" {
+ return int(syscall.EINVAL), fmt.Errorf("sdkid must be set")
+ }
+
args := xaapiv1.ExecArgs{
ID: g.prjID,
SdkID: g.sdkID,
})
gdb.OnDisconnect(func(err error) {
- fmt.Println("Disconnection: ", err.Error())
+ errMsg := "\nXDS-Agent disconnected"
+ if err != nil {
+ fmt.Printf("%s: %v\n", errMsg, err.Error())
+ } else {
+ fmt.Println(errMsg)
+ }
+
exitChan <- exitResult{err, int(syscall.ESHUTDOWN)}
})
time.Sleep(time.Millisecond * 200)
}
- gdb.Write(command + "\n")
log.Debugf("Send: <%v>", command)
+ gdb.Write(command + "\n")
}
log.Infof("Stdin scanner exit, close stdin (err=%v)", sc.Err())