mirror of
				https://github.com/containers/podman.git
				synced 2025-11-01 02:42:11 +08:00 
			
		
		
		
	
		
			
				
	
	
		
			50 lines
		
	
	
		
			999 B
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			50 lines
		
	
	
		
			999 B
		
	
	
	
		
			Go
		
	
	
	
	
	
| package events
 | |
| 
 | |
| import (
 | |
| 	"context"
 | |
| )
 | |
| 
 | |
| // EventMemory is the structure for event writing to a channel. It contains the eventer
 | |
| // options and the event itself.  Methods for reading and writing are also defined from it.
 | |
| type EventMemory struct {
 | |
| 	options  EventerOptions
 | |
| 	elements chan *Event
 | |
| }
 | |
| 
 | |
| // Write event to memory queue
 | |
| func (e EventMemory) Write(event Event) (err error) {
 | |
| 	e.elements <- &event
 | |
| 	return
 | |
| }
 | |
| 
 | |
| // Read event(s) from memory queue
 | |
| func (e EventMemory) Read(ctx context.Context, options ReadOptions) (err error) {
 | |
| 	select {
 | |
| 	case <-ctx.Done():
 | |
| 		return
 | |
| 	default:
 | |
| 	}
 | |
| 
 | |
| 	select {
 | |
| 	case event := <-e.elements:
 | |
| 		options.EventChannel <- event
 | |
| 	default:
 | |
| 	}
 | |
| 	return nil
 | |
| }
 | |
| 
 | |
| // String returns eventer type
 | |
| func (e EventMemory) String() string {
 | |
| 	return e.options.EventerType
 | |
| }
 | |
| 
 | |
| // NewMemoryEventer returns configured MemoryEventer
 | |
| func NewMemoryEventer() Eventer {
 | |
| 	return EventMemory{
 | |
| 		options: EventerOptions{
 | |
| 			EventerType: Memory.String(),
 | |
| 		},
 | |
| 		elements: make(chan *Event, 100),
 | |
| 	}
 | |
| }
 | 
