X-Git-Url: https://gerrit.automotivelinux.org/gerrit/gitweb?a=blobdiff_plain;f=main.go;h=32083bbd41045c000486cc999a3c74a580984b7a;hb=777204d72f9d184e4416f943d8a1a38051dfb5ae;hp=93d13a26ef9e4f18d8725f8cc1f04f924b369010;hpb=bfeab33538d50ee52750de4dd4c0e72b64f674f6;p=src%2Fxds%2Fxds-agent.git diff --git a/main.go b/main.go index 93d13a2..32083bb 100644 --- a/main.go +++ b/main.go @@ -3,18 +3,17 @@ package main import ( + "fmt" "log" "os" "time" - "fmt" - "github.com/Sirupsen/logrus" "github.com/codegangsta/cli" "github.com/iotbzh/xds-agent/lib/agent" "github.com/iotbzh/xds-agent/lib/syncthing" + "github.com/iotbzh/xds-agent/lib/webserver" "github.com/iotbzh/xds-agent/lib/xdsconfig" - "github.com/iotbzh/xds-agent/lib/xdsserver" ) const ( @@ -37,47 +36,47 @@ var AppSubVersion = "unknown-dev" // xdsAgent main routine func xdsAgent(cliCtx *cli.Context) error { + var err error // Create Agent context ctx := agent.NewAgent(cliCtx) // Load config - cfg, err := xdsconfig.Init(cliCtx, ctx.Log) + ctx.Config, err = xdsconfig.Init(cliCtx, ctx.Log) if err != nil { return cli.NewExitError(err, 2) } - ctx.Config = &cfg // Start local instance of Syncthing and Syncthing-notify - ctx.SThg = st.NewSyncThing(ctx.Config.FileConf.SThgConf, ctx.Log) + ctx.SThg = st.NewSyncThing(ctx.Config, ctx.Log) ctx.Log.Infof("Starting Syncthing...") ctx.SThgCmd, err = ctx.SThg.Start() if err != nil { return cli.NewExitError(err, 2) } - ctx.Log.Infof("Syncthing started (PID %d)", ctx.SThgCmd.Process.Pid) + fmt.Printf("Syncthing started (PID %d)\n", ctx.SThgCmd.Process.Pid) ctx.Log.Infof("Starting Syncthing-inotify...") ctx.SThgInotCmd, err = ctx.SThg.StartInotify() if err != nil { return cli.NewExitError(err, 2) } - ctx.Log.Infof("Syncthing-inotify started (PID %d)", ctx.SThgInotCmd.Process.Pid) + fmt.Printf("Syncthing-inotify started (PID %d)\n", ctx.SThgInotCmd.Process.Pid) // Establish connection with local Syncthing (retry if connection fail) time.Sleep(3 * time.Second) - retry := 10 + maxRetry := 30 + retry := maxRetry for retry > 0 { if err := ctx.SThg.Connect(); err == nil { break } - ctx.Log.Infof("Establishing connection to Syncthing (retry %d/5)", retry) + ctx.Log.Infof("Establishing connection to Syncthing (retry %d/%d)", retry, maxRetry) time.Sleep(time.Second) retry-- } - if ctx.SThg == nil { - err = fmt.Errorf("ERROR: cannot connect to Syncthing (url: %s)", ctx.SThg.BaseURL) + if err != nil || retry == 0 { return cli.NewExitError(err, 2) } @@ -89,7 +88,7 @@ func xdsAgent(cliCtx *cli.Context) error { ctx.Log.Infof("Local Syncthing ID: %s", id) // Create and start Web Server - ctx.WWWServer = xdsserver.NewServer(ctx.Config, ctx.Log) + ctx.WWWServer = webserver.New(ctx.Config, ctx.Log) if err = ctx.WWWServer.Serve(); err != nil { log.Println(err) return cli.NewExitError(err, 3)