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  }