Documentation ¶
Index ¶
Constants ¶
This section is empty.
Variables ¶
var StopPropagation = errors.New("Event hook propagation stopped")
Functions ¶
This section is empty.
Types ¶
type Hook ¶
type Hook[T any] struct { // contains filtered or unexported fields }
Hook defines a concurrent safe structure for handling event hooks (aka. callbacks propagation).
func (*Hook[T]) Add ¶
Add registers a new handler to the hook by appending it to the existing queue.
Returns an autogenerated hook id that could be used later to remove the hook with Hook.Remove(id).
func (*Hook[T]) PreAdd ¶
PreAdd registers a new handler to the hook by prepending it to the existing queue.
Returns an autogenerated hook id that could be used later to remove the hook with Hook.Remove(id).
func (*Hook[T]) RemoveAll ¶
func (h *Hook[T]) RemoveAll()
RemoveAll removes all registered handlers.
func (*Hook[T]) Trigger ¶
Trigger executes all registered hook handlers one by one with the specified `data` as an argument.
Optionally, this method allows also to register additional one off handlers that will be temporary appended to the handlers queue.
The execution stops when: - hook.StopPropagation is returned in one of the handlers - any non-nil error is returned in one of the handlers
type TaggedHook ¶
type TaggedHook[T Tagger] struct { // contains filtered or unexported fields }
TaggedHook defines a proxy hook which register handlers that are triggered only if the TaggedHook.tags are empty or includes at least one of the event data tag(s).
func NewTaggedHook ¶
func NewTaggedHook[T Tagger](hook *Hook[T], tags ...string) *TaggedHook[T]
NewTaggedHook creates a new TaggedHook with the provided main hook and optional tags.
func (*TaggedHook[T]) Add ¶
func (h *TaggedHook[T]) Add(fn Handler[T]) string
Add registers a new handler to the hook by appending it to the existing queue.
The fn handler will be called only if the event data tags satisfy h.CanTriggerOn.
func (*TaggedHook[T]) CanTriggerOn ¶
func (h *TaggedHook[T]) CanTriggerOn(tags []string) bool
CanTriggerOn checks if the current TaggedHook can be triggered with the provided event data tags.
func (*TaggedHook[T]) PreAdd ¶
func (h *TaggedHook[T]) PreAdd(fn Handler[T]) string
PreAdd registers a new handler to the hook by prepending it to the existing queue.
The fn handler will be called only if the event data tags satisfy h.CanTriggerOn.