github.com/castai/kvisor@v1.7.1-0.20240516114728-b3572a2607b5/cmd/agent/daemon/state/stdio_events_exporter.go (about) 1 package state 2 3 import ( 4 "context" 5 "fmt" 6 7 castpb "github.com/castai/kvisor/api/v1/runtime" 8 "github.com/castai/kvisor/pkg/logging" 9 ) 10 11 func NewStdioEventsExporter(log *logging.Logger) *StdioEventsExporter { 12 return &StdioEventsExporter{ 13 log: log.WithField("component", "stdio_events_exporter"), 14 queue: make(chan *castpb.Event, 1000), 15 } 16 } 17 18 type StdioEventsExporter struct { 19 log *logging.Logger 20 queue chan *castpb.Event 21 } 22 23 func (c *StdioEventsExporter) Run(ctx context.Context) error { 24 c.log.Info("running export loop") 25 defer c.log.Info("export loop done") 26 27 for { 28 select { 29 case <-ctx.Done(): 30 return ctx.Err() 31 case e := <-c.queue: 32 fmt.Printf("event: %+v\n", e) 33 } 34 } 35 } 36 37 func (c *StdioEventsExporter) Enqueue(e *castpb.Event) { 38 select { 39 case c.queue <- e: 40 default: 41 } 42 }