Correctly handle reading from events channel

Signed-off-by: Michael Crosby <crosbymichael@gmail.com>
This commit is contained in:
Michael Crosby 2018-04-24 16:58:51 -04:00
parent 209a7fc3e4
commit 090687916d

View File

@ -42,18 +42,15 @@ var Command = cli.Command{
defer cancel() defer cancel()
eventsClient := client.EventService() eventsClient := client.EventService()
eventsCh, errCh := eventsClient.Subscribe(ctx, context.Args()...) eventsCh, errCh := eventsClient.Subscribe(ctx, context.Args()...)
for { open := true
for open {
var e *events.Envelope var e *events.Envelope
select { select {
case evt, closed := <-eventsCh: case e = <-eventsCh:
if closed { case err, open = <-errCh:
return nil
}
e = evt
case err := <-errCh:
return err return err
} }
if e != nil {
var out []byte var out []byte
if e.Event != nil { if e.Event != nil {
v, err := typeurl.UnmarshalAny(e.Event) v, err := typeurl.UnmarshalAny(e.Event)
@ -65,7 +62,6 @@ var Command = cli.Command{
return err return err
} }
} }
if _, err := fmt.Println( if _, err := fmt.Println(
e.Timestamp, e.Timestamp,
e.Namespace, e.Namespace,
@ -75,5 +71,7 @@ var Command = cli.Command{
return err return err
} }
} }
}
return nil
}, },
} }