From a09067ecb70d2597afc1a4719e02cf8d2149a8af Mon Sep 17 00:00:00 2001 From: Edouard Paris Date: Fri, 29 Mar 2019 17:30:48 +0100 Subject: [PATCH] controller: add pubsub --- cli/cli.go | 17 ++++++++++++----- pubsub/pubsub.go | 3 +-- ui/controller.go | 13 +++++++++++++ ui/ui.go | 14 ++++++++++---- 4 files changed, 36 insertions(+), 11 deletions(-) diff --git a/cli/cli.go b/cli/cli.go index d5dd559..c3c8d45 100644 --- a/cli/cli.go +++ b/cli/cli.go @@ -65,7 +65,17 @@ func run(c *cli.Context) error { return err } - return ui.Run(context.Background(), app) + events := make(chan *events.Event) + + go func() { + err := ui.Run(context.Background(), app, events) + if err != nil { + app.Logger.Debug("ui", logging.String("error", err.Error())) + } + }() + + pubsub.Run(context.Background(), app, events) + return nil } func pubsubRun(c *cli.Context) error { @@ -80,10 +90,7 @@ func pubsubRun(c *cli.Context) error { } events := make(chan *events.Event) - err = pubsub.Run(context.Background(), app, events) - if err != nil { - return err - } + pubsub.Run(context.Background(), app, events) //ev := <-events //app.Logger.Info("events quit ", logging.String("type", ev.Type)) diff --git a/pubsub/pubsub.go b/pubsub/pubsub.go index 41b2290..9d67a7a 100644 --- a/pubsub/pubsub.go +++ b/pubsub/pubsub.go @@ -82,11 +82,10 @@ func (p *pubSub) wait() { p.wg.Wait() } -func Run(ctx context.Context, app *app.App, sub chan *events.Event) error { +func Run(ctx context.Context, app *app.App, sub chan *events.Event) { pubSub := newPubSub(app.Logger, app.Network) pubSub.logger.Debug("Starting...") pubSub.invoices(ctx, sub) pubSub.wait() - return nil } diff --git a/ui/controller.go b/ui/controller.go index 074fe96..d002097 100644 --- a/ui/controller.go +++ b/ui/controller.go @@ -6,6 +6,8 @@ import ( "github.com/jroimartin/gocui" "github.com/edouardparis/lntop/app" + "github.com/edouardparis/lntop/events" + "github.com/edouardparis/lntop/logging" "github.com/edouardparis/lntop/ui/models" "github.com/edouardparis/lntop/ui/views" ) @@ -65,6 +67,17 @@ func (c *controller) SetModels(ctx context.Context) error { return c.models.RefreshChannels(ctx) } +func (c *controller) Refresh(ctx context.Context, sub chan *events.Event) error { + for event := range sub { + if event.Type == events.Quit { + break + } + c.models.App.Logger.Info("models loop", logging.String("type event", event.Type)) + } + + return gocui.ErrQuit +} + func quit(g *gocui.Gui, v *gocui.View) error { return gocui.ErrQuit } diff --git a/ui/ui.go b/ui/ui.go index 6a2e960..50d95bb 100644 --- a/ui/ui.go +++ b/ui/ui.go @@ -6,9 +6,10 @@ import ( "github.com/jroimartin/gocui" "github.com/edouardparis/lntop/app" + "github.com/edouardparis/lntop/events" ) -func Run(ctx context.Context, app *app.App) error { +func Run(ctx context.Context, app *app.App, sub chan *events.Event) error { g, err := gocui.NewGui(gocui.OutputNormal) if err != nil { return err @@ -29,10 +30,15 @@ func Run(ctx context.Context, app *app.App) error { return err } + go func() { + err := ctrl.Refresh(ctx, sub) + if err != nil { + g.Update(func(*gocui.Gui) error { return err }) + } + }() + err = g.MainLoop() - if err != nil && err != gocui.ErrQuit { - return err - } + close(sub) return err }