controller: add pubsub

pull/1/head
Edouard Paris 5 years ago
parent 64d0388015
commit a09067ecb7

@ -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))

@ -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
}

@ -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
}

@ -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
}

Loading…
Cancel
Save