github.com/containers/podman/v4@v4.9.4/libpod/events/memory.go (about) 1 package events 2 3 import ( 4 "context" 5 ) 6 7 // EventMemory is the structure for event writing to a channel. It contains the eventer 8 // options and the event itself. Methods for reading and writing are also defined from it. 9 type EventMemory struct { 10 options EventerOptions 11 elements chan *Event 12 } 13 14 // Write event to memory queue 15 func (e EventMemory) Write(event Event) (err error) { 16 e.elements <- &event 17 return 18 } 19 20 // Read event(s) from memory queue 21 func (e EventMemory) Read(ctx context.Context, options ReadOptions) (err error) { 22 select { 23 case <-ctx.Done(): 24 return 25 default: 26 } 27 28 select { 29 case event := <-e.elements: 30 options.EventChannel <- event 31 default: 32 } 33 return nil 34 } 35 36 // String returns eventer type 37 func (e EventMemory) String() string { 38 return e.options.EventerType 39 } 40 41 // NewMemoryEventer returns configured MemoryEventer 42 func NewMemoryEventer() Eventer { 43 return EventMemory{ 44 options: EventerOptions{ 45 EventerType: Memory.String(), 46 }, 47 elements: make(chan *Event, 100), 48 } 49 }