Documentation
¶
Overview ¶
Package event provides deterministic event dispatching with subscriber and listener contracts.
Index ¶
- Constants
- func EventDispatcherMustFromContainer(serviceContainer containercontract.Container) eventcontract.EventDispatcher
- func EventDispatcherMustFromResolver(resolver containercontract.Resolver) eventcontract.EventDispatcher
- type Event
- type EventDispatcher
- func (instance *EventDispatcher) AddListener(eventName string, listener eventcontract.EventListener, priority int) eventcontract.ListenerRegistration
- func (instance *EventDispatcher) AddSubscriber(subscriber eventcontract.EventSubscriber)
- func (instance *EventDispatcher) Dispatch(runtimeInstance runtimecontract.Runtime, event eventcontract.Event) (eventcontract.Event, error)
- func (instance *EventDispatcher) DispatchName(runtimeInstance runtimecontract.Runtime, eventName string, payload any) (eventcontract.Event, error)
- func (instance *EventDispatcher) MarkListenerMaySkipRequiredListeners(registration eventcontract.ListenerRegistration)
- func (instance *EventDispatcher) MarkListenerRequired(registration eventcontract.ListenerRegistration)
- func (instance *EventDispatcher) RegisteredEvents() []eventcontract.RegisteredEvent
- func (instance *EventDispatcher) RemoveListener(registration eventcontract.ListenerRegistration) bool
- func (instance *EventDispatcher) RemoveSubscriber(subscriber eventcontract.EventSubscriber) int
- type EventDispatcherAdapter
- func (instance *EventDispatcherAdapter) AddListener(eventName string, listener eventcontract.EventListener, priority int) eventcontract.ListenerRegistration
- func (instance *EventDispatcherAdapter) AddSubscriber(subscriber eventcontract.EventSubscriber)
- func (instance *EventDispatcherAdapter) Dispatch(runtimeInstance runtimecontract.Runtime, eventValue eventcontract.Event) (eventcontract.Event, error)
- func (instance *EventDispatcherAdapter) DispatchName(runtimeInstance runtimecontract.Runtime, eventName string, payload any) (eventcontract.Event, error)
- func (instance *EventDispatcherAdapter) MarkListenerMaySkipRequiredListeners(registration eventcontract.ListenerRegistration)
- func (instance *EventDispatcherAdapter) MarkListenerRequired(registration eventcontract.ListenerRegistration)
- func (instance *EventDispatcherAdapter) RegisteredEvents() []eventcontract.RegisteredEvent
- func (instance *EventDispatcherAdapter) RemoveListener(registration eventcontract.ListenerRegistration) bool
- func (instance *EventDispatcherAdapter) RemoveSubscriber(subscriber eventcontract.EventSubscriber) int
- type SubscribedEvent
Constants ¶
const (
ServiceEventDispatcher = "service.event.dispatcher"
)
Variables ¶
This section is empty.
Functions ¶
func EventDispatcherMustFromContainer ¶
func EventDispatcherMustFromContainer(serviceContainer containercontract.Container) eventcontract.EventDispatcher
func EventDispatcherMustFromResolver ¶
func EventDispatcherMustFromResolver(resolver containercontract.Resolver) eventcontract.EventDispatcher
Types ¶
type Event ¶
type Event struct {
// contains filtered or unexported fields
}
func NewEvent ¶
func NewEvent( name string, payload any, clockInstance clockcontract.Clock, ) *Event
func NewEventFromEvent ¶
func NewEventFromEvent(event eventcontract.Event) *Event
func NewEventWithTimestamp ¶
func (*Event) IsPropagationStopped ¶
func (*Event) StopPropagation ¶
func (instance *Event) StopPropagation()
type EventDispatcher ¶
type EventDispatcher struct {
// contains filtered or unexported fields
}
func NewEventDispatcher ¶
func NewEventDispatcher(clock clockcontract.Clock) *EventDispatcher
func (*EventDispatcher) AddListener ¶
func (instance *EventDispatcher) AddListener( eventName string, listener eventcontract.EventListener, priority int, ) eventcontract.ListenerRegistration
func (*EventDispatcher) AddSubscriber ¶
func (instance *EventDispatcher) AddSubscriber(subscriber eventcontract.EventSubscriber)
func (*EventDispatcher) Dispatch ¶
func (instance *EventDispatcher) Dispatch(runtimeInstance runtimecontract.Runtime, event eventcontract.Event) (eventcontract.Event, error)
func (*EventDispatcher) DispatchName ¶
func (instance *EventDispatcher) DispatchName(runtimeInstance runtimecontract.Runtime, eventName string, payload any) (eventcontract.Event, error)
func (*EventDispatcher) MarkListenerMaySkipRequiredListeners ¶ added in v3.9.0
func (instance *EventDispatcher) MarkListenerMaySkipRequiredListeners(registration eventcontract.ListenerRegistration)
MarkListenerMaySkipRequiredListeners flags the registered listener so that when it stops propagation it is allowed to skip required listeners behind it without failing dispatch — the explicit opt-out that restores the plain stop-and-proceed behavior for a listener that knowingly short-circuits.
func (*EventDispatcher) MarkListenerRequired ¶ added in v3.9.0
func (instance *EventDispatcher) MarkListenerRequired(registration eventcontract.ListenerRegistration)
MarkListenerRequired flags the registered listener so that if another listener stops event propagation before it runs, dispatch returns an error and the caller can fail closed. A no-op if the registration is unknown (for example already removed).
func (*EventDispatcher) RegisteredEvents ¶
func (instance *EventDispatcher) RegisteredEvents() []eventcontract.RegisteredEvent
func (*EventDispatcher) RemoveListener ¶
func (instance *EventDispatcher) RemoveListener(registration eventcontract.ListenerRegistration) bool
func (*EventDispatcher) RemoveSubscriber ¶
func (instance *EventDispatcher) RemoveSubscriber(subscriber eventcontract.EventSubscriber) int
type EventDispatcherAdapter ¶
type EventDispatcherAdapter struct {
// contains filtered or unexported fields
}
func NewEventDispatcherAdapter ¶
func NewEventDispatcherAdapter( eventDispatcher eventcontract.EventDispatcher, clock clockcontract.Clock, ) *EventDispatcherAdapter
func (*EventDispatcherAdapter) AddListener ¶
func (instance *EventDispatcherAdapter) AddListener(eventName string, listener eventcontract.EventListener, priority int) eventcontract.ListenerRegistration
func (*EventDispatcherAdapter) AddSubscriber ¶
func (instance *EventDispatcherAdapter) AddSubscriber(subscriber eventcontract.EventSubscriber)
func (*EventDispatcherAdapter) Dispatch ¶
func (instance *EventDispatcherAdapter) Dispatch(runtimeInstance runtimecontract.Runtime, eventValue eventcontract.Event) (eventcontract.Event, error)
func (*EventDispatcherAdapter) DispatchName ¶
func (instance *EventDispatcherAdapter) DispatchName(runtimeInstance runtimecontract.Runtime, eventName string, payload any) (eventcontract.Event, error)
func (*EventDispatcherAdapter) MarkListenerMaySkipRequiredListeners ¶ added in v3.9.0
func (instance *EventDispatcherAdapter) MarkListenerMaySkipRequiredListeners(registration eventcontract.ListenerRegistration)
MarkListenerMaySkipRequiredListeners forwards to the wrapped dispatcher when it supports required-listener registration; a no-op otherwise.
func (*EventDispatcherAdapter) MarkListenerRequired ¶ added in v3.9.0
func (instance *EventDispatcherAdapter) MarkListenerRequired(registration eventcontract.ListenerRegistration)
MarkListenerRequired forwards to the wrapped dispatcher when it supports required-listener registration; a no-op otherwise, so the adapter stays usable over a dispatcher that does not implement it.
func (*EventDispatcherAdapter) RegisteredEvents ¶
func (instance *EventDispatcherAdapter) RegisteredEvents() []eventcontract.RegisteredEvent
func (*EventDispatcherAdapter) RemoveListener ¶
func (instance *EventDispatcherAdapter) RemoveListener(registration eventcontract.ListenerRegistration) bool
func (*EventDispatcherAdapter) RemoveSubscriber ¶
func (instance *EventDispatcherAdapter) RemoveSubscriber(subscriber eventcontract.EventSubscriber) int
type SubscribedEvent ¶
type SubscribedEvent struct {
// contains filtered or unexported fields
}
func NewSubscribedEvent ¶
func NewSubscribedEvent( listener eventcontract.EventListener, priority int, ) *SubscribedEvent
func (*SubscribedEvent) Listener ¶
func (instance *SubscribedEvent) Listener() eventcontract.EventListener
func (*SubscribedEvent) Priority ¶
func (instance *SubscribedEvent) Priority() int