podman
1package events
2
3import (
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.
9type EventMemory struct {
10options EventerOptions
11elements chan *Event
12}
13
14// Write event to memory queue
15func (e EventMemory) Write(event Event) (err error) {
16e.elements <- &event
17return
18}
19
20// Read event(s) from memory queue
21func (e EventMemory) Read(ctx context.Context, options ReadOptions) (err error) {
22select {
23case <-ctx.Done():
24return
25default:
26}
27
28select {
29case event := <-e.elements:
30options.EventChannel <- event
31default:
32}
33return nil
34}
35
36// String returns eventer type
37func (e EventMemory) String() string {
38return e.options.EventerType
39}
40
41// NewMemoryEventer returns configured MemoryEventer
42func NewMemoryEventer() Eventer {
43return EventMemory{
44options: EventerOptions{
45EventerType: Memory.String(),
46},
47elements: make(chan *Event, 100),
48}
49}
50