blob: 19a2e90e200c94964c2e2d9d06eaed967ee170c5 [file] [log] [blame]
package apid
type EventSelector string
type Event interface{}
type EventHandler interface {
Handle(event Event)
}
type EventHandlerFunc func(event Event)
type EventsService interface {
// publish an event to the selector
Emit(selector EventSelector, event Event)
// when an event matching selector occurs, run the provided handler
Listen(selector EventSelector, handler EventHandler)
// when an event matching selector occurs, run the provided handler function
ListenFunc(selector EventSelector, handler EventHandlerFunc)
// remove a listener
StopListening(selector EventSelector, handler EventHandler)
// shut it down
Close()
}
const EventDeliveredSelector EventSelector = "event delivered"
type EventDeliveryEvent struct {
Description string
Selector EventSelector
Event Event
}