Documentation
¶
Overview ¶
Package event is lightweight event manager and dispatcher implements by Go.
Index ¶
- Constants
- func AddEvent(e Event)
- func AddEventFc(name string, fc FactoryFunc)
- func AddSubscriber(sbr Subscriber)
- func Async(name string, params M)
- func AsyncFire(e Event)
- func CloseWait() error
- func Config(fn ...OptionFn)
- func FireAsync(e Event)
- func FireBatch(es ...any) []error
- func FireEvent(e Event) error
- func HasEvent(name string) bool
- func HasListeners(name string) bool
- func Listen(name string, listener Listener, priority ...int)
- func On(name string, listener Listener, priority ...int)
- func Reset()
- func Subscribe(sbr Subscriber)
- func TriggerEvent(e Event) error
- func UsePathMode(o *Options)
- type BasicEvent
- func (e *BasicEvent) Abort(abort bool)
- func (e *BasicEvent) Add(key string, val any)
- func (e *BasicEvent) AttachTo(em ManagerFace)
- func (e *BasicEvent) Clone() Event
- func (e *BasicEvent) Data() map[string]any
- func (e *BasicEvent) Fill(target any, data M) *BasicEvent
- func (e *BasicEvent) Get(key string) any
- func (e *BasicEvent) IsAborted() bool
- func (e *BasicEvent) Name() string
- func (e *BasicEvent) Set(key string, val any)
- func (e *BasicEvent) SetData(data M) Event
- func (e *BasicEvent) SetName(name string) *BasicEvent
- func (e *BasicEvent) SetTarget(target any) *BasicEvent
- func (e *BasicEvent) Target() any
- type ByPriorityItems
- type Cloneable
- type Event
- type FactoryFunc
- type Listener
- type ListenerFunc
- type ListenerItem
- type ListenerQueue
- func (lq *ListenerQueue) Clear()
- func (lq *ListenerQueue) IsEmpty() bool
- func (lq *ListenerQueue) Items() []*ListenerItem
- func (lq *ListenerQueue) Len() int
- func (lq *ListenerQueue) Push(li *ListenerItem) *ListenerQueue
- func (lq *ListenerQueue) Remove(listener Listener)
- func (lq *ListenerQueue) Sort() *ListenerQueue
- type M
- type Manager
- func (em *Manager) AddEvent(e Event)
- func (em *Manager) AddEventFc(name string, fc FactoryFunc)
- func (em *Manager) AddListener(name string, listener Listener, priority ...int)
- func (em *Manager) AddSubscriber(sbr Subscriber)
- func (em *Manager) Async(name string, params M)
- func (em *Manager) AsyncFire(e Event)
- func (em *Manager) AwaitFire(e Event) (err error)
- func (em *Manager) Clear()
- func (em *Manager) Close() error
- func (em *Manager) CloseWait() error
- func (em *Manager) Fire(name string, params M) (err error, e Event)
- func (em *Manager) FireAsync(e Event)
- func (em *Manager) FireBatch(es ...any) (ers []error)
- func (em *Manager) FireC(name string, params M)
- func (em *Manager) FireEvent(e Event) (err error)
- func (em *Manager) GetEvent(name string) (e Event, ok bool)
- func (em *Manager) HasEvent(name string) bool
- func (em *Manager) HasListeners(name string) bool
- func (em *Manager) Listen(name string, listener Listener, priority ...int)
- func (em *Manager) ListenedNames() map[string]int
- func (em *Manager) Listeners() map[string]*ListenerQueue
- func (em *Manager) ListenersByName(name string) *ListenerQueue
- func (em *Manager) ListenersCount(name string) int
- func (em *Manager) MustFire(name string, params M) Event
- func (em *Manager) MustTrigger(name string, params M) Event
- func (em *Manager) On(name string, listener Listener, priority ...int)
- func (em *Manager) RemoveEvent(name string)
- func (em *Manager) RemoveEvents()
- func (em *Manager) RemoveListener(name string, listener Listener)
- func (em *Manager) RemoveListeners(name string)
- func (em *Manager) Reset()
- func (em *Manager) Subscribe(sbr Subscriber)
- func (em *Manager) Trigger(name string, params M) (error, Event)
- func (em *Manager) Wait() error
- func (em *Manager) WithOptions(fns ...OptionFn) *Manager
- type ManagerFace
- type OptionFn
- type Options
- type Subscriber
Constants ¶
const ( Wildcard = "*" AnyNode = "*" AllNode = "**" )
wildcard event name
const ( // ModeSimple old mode, simple match group listener. // // - "*" only allow one and must at end // // Support: "user.*" -> match "user.created" "user.updated" ModeSimple uint8 = iota // ModePath path mode. // // - "*" matches any sequence of non . characters (like at path.Match()) // - "**" match all characters to end, only allow at start or end on pattern. // // Support like this: // "eve.some.*.*" -> match "eve.some.thing.run" "eve.some.thing.do" // "eve.some.*.run" -> match "eve.some.thing.run", but not match "eve.some.thing.do" // "eve.some.**" -> match any start with "eve.some.". eg: "eve.some.thing.run" "eve.some.thing.do" // "**.thing.run" -> match any ends with ".thing.run". eg: "eve.some.thing.run" ModePath )
const ( Min = -300 Low = -200 BelowNormal = -100 Normal = 0 AboveNormal = 100 High = 200 Max = 300 )
There are some default priority constants
Variables ¶
This section is empty.
Functions ¶
func AddEventFc ¶ added in v1.1.1
func AddEventFc(name string, fc FactoryFunc)
AddEventFc add a pre-defined event factory func to manager.
func AddSubscriber ¶ added in v1.0.5
func AddSubscriber(sbr Subscriber)
AddSubscriber register a listener to the event
func AsyncFire ¶ added in v1.0.4
func AsyncFire(e Event)
AsyncFire simple async fire event by 'go' keywords
func CloseWait ¶ added in v1.1.1
func CloseWait() error
CloseWait close chan and wait for all async events done.
func HasListeners ¶
HasListeners has listeners for the event name.
func Subscribe ¶ added in v1.0.4
func Subscribe(sbr Subscriber)
Subscribe register a listener to the event
func TriggerEvent ¶ added in v1.0.4
TriggerEvent alias of FireEvent
func UsePathMode ¶ added in v1.1.0
func UsePathMode(o *Options)
UsePathMode set event name match mode to ModePath
Types ¶
type BasicEvent ¶
type BasicEvent struct {
// contains filtered or unexported fields
}
BasicEvent a built-in implements Event interface
func (*BasicEvent) AttachTo ¶
func (e *BasicEvent) AttachTo(em ManagerFace)
AttachTo add current event to the event manager.
func (*BasicEvent) SetData ¶
func (e *BasicEvent) SetData(data M) Event
SetData set data to the event
func (*BasicEvent) SetName ¶
func (e *BasicEvent) SetName(name string) *BasicEvent
SetName set event name
func (*BasicEvent) SetTarget ¶
func (e *BasicEvent) SetTarget(target any) *BasicEvent
SetTarget set event target
type ByPriorityItems ¶
type ByPriorityItems []*ListenerItem
ByPriorityItems type. implements the sort.Interface
func (ByPriorityItems) Less ¶
func (ls ByPriorityItems) Less(i, j int) bool
Less implements the sort.Interface.Less.
func (ByPriorityItems) Swap ¶
func (ls ByPriorityItems) Swap(i, j int)
Swap implements the sort.Interface.Swap.
type Event ¶
type Event interface { Name() string Get(key string) any Set(key string, val any) Add(key string, val any) Data() map[string]any SetData(M) Event Abort(bool) IsAborted() bool }
Event interface
func MustTrigger ¶ added in v1.0.4
MustTrigger alias of MustFire
type FactoryFunc ¶ added in v1.1.0
type FactoryFunc func() Event
FactoryFunc for create event instance.
type ListenerFunc ¶
ListenerFunc func definition.
func (ListenerFunc) Handle ¶
func (fn ListenerFunc) Handle(e Event) error
Handle event. implements the Listener interface
type ListenerItem ¶
ListenerItem storage a event listener and it's priority value.
type ListenerQueue ¶
type ListenerQueue struct {
// contains filtered or unexported fields
}
ListenerQueue storage sorted Listener instance.
func (*ListenerQueue) IsEmpty ¶
func (lq *ListenerQueue) IsEmpty() bool
IsEmpty get items length == 0
func (*ListenerQueue) Items ¶
func (lq *ListenerQueue) Items() []*ListenerItem
Items get all ListenerItem
func (*ListenerQueue) Push ¶
func (lq *ListenerQueue) Push(li *ListenerItem) *ListenerQueue
Push get items length
func (*ListenerQueue) Remove ¶
func (lq *ListenerQueue) Remove(listener Listener)
Remove a listener from the queue
func (*ListenerQueue) Sort ¶
func (lq *ListenerQueue) Sort() *ListenerQueue
Sort the queue items by ListenerItem's priority.
Priority:
High > Low
type Manager ¶
Manager event manager definition. for manage events and listeners
func NewManager ¶
NewManager create event manager
func (*Manager) AddEventFc ¶ added in v1.1.0
func (em *Manager) AddEventFc(name string, fc FactoryFunc)
AddEventFc add a pre-defined event factory func to manager.
func (*Manager) AddListener ¶
AddListener register a event handler/listener. alias of the method On()
func (*Manager) AddSubscriber ¶
func (em *Manager) AddSubscriber(sbr Subscriber)
AddSubscriber add events by subscriber interface.
you can register multi event listeners in a struct func. more usage please see README or tests.
func (*Manager) Async ¶ added in v1.1.0
Async fire event by go channel.
Note: if you want to use this method, you should call the method Close() after all events are fired.
func (*Manager) AwaitFire ¶
AwaitFire async fire event by 'go' keywords, but will wait return result
func (*Manager) FireAsync ¶ added in v1.1.0
FireAsync async fire event by go channel.
Note: if you want to use this method, you should call the method Close() after all events are fired.
Example:
em := NewManager("test") em.FireAsync("db.user.add", M{"id": 1001})
func (*Manager) FireBatch ¶
FireBatch fire multi event at once.
Usage:
FireBatch("name1", "name2", &MyEvent{})
func (*Manager) FireC ¶ added in v1.1.0
FireC async fire event by go channel. alias of the method Async()
Note: if you want to use this method, you should call the method Close() after all events are fired.
func (*Manager) HasListeners ¶
HasListeners check has direct listeners for the event name.
func (*Manager) Listen ¶ added in v1.0.4
Listen register a event handler/listener. alias of the On()
func (*Manager) ListenedNames ¶
ListenedNames get listened event names
func (*Manager) Listeners ¶ added in v1.0.1
func (em *Manager) Listeners() map[string]*ListenerQueue
Listeners get all listeners
func (*Manager) ListenersByName ¶ added in v1.0.1
func (em *Manager) ListenersByName(name string) *ListenerQueue
ListenersByName get listeners by given event name
func (*Manager) ListenersCount ¶
ListenersCount get listeners number for the event name.
func (*Manager) MustTrigger ¶ added in v1.0.5
MustTrigger alias of the method MustFire()
func (*Manager) On ¶
On register a event handler/listener. can setting priority.
Usage:
em.On("evt0", listener) em.On("evt0", listener, High)
func (*Manager) RemoveEvent ¶
RemoveEvent delete pre-define Event by name
func (*Manager) RemoveEvents ¶
func (em *Manager) RemoveEvents()
RemoveEvents remove all registered events
func (*Manager) RemoveListener ¶
RemoveListener remove a given listener, you can limit event name.
Usage:
RemoveListener("", listener) RemoveListener("name", listener) // limit event name.
func (*Manager) RemoveListeners ¶
RemoveListeners remove listeners by given name
func (*Manager) Reset ¶ added in v1.0.5
func (em *Manager) Reset()
Reset the manager, clear all data.
func (*Manager) Subscribe ¶ added in v1.0.4
func (em *Manager) Subscribe(sbr Subscriber)
Subscribe add events by subscriber interface. alias of the AddSubscriber()
func (*Manager) WithOptions ¶ added in v1.1.0
WithOptions create event manager with options
type ManagerFace ¶
type ManagerFace interface { // AddEvent events: add event AddEvent(Event) // On listeners: add listeners On(name string, listener Listener, priority ...int) // Fire event Fire(name string, params M) (error, Event) }
ManagerFace event manager interface
type OptionFn ¶ added in v1.1.0
type OptionFn func(o *Options)
OptionFn event manager config option func
func EnableLock ¶ added in v1.1.0
EnableLock enable lock on fire event.
type Options ¶ added in v1.1.0
type Options struct { // EnableLock enable lock on fire event. default is False. EnableLock bool // ChannelSize for fire events by goroutine ChannelSize int ConsumerNum int // MatchMode event name match mode. default is ModeSimple MatchMode uint8 }
Options event manager config options
type Subscriber ¶
type Subscriber interface { // SubscribedEvents register event listeners // // - key: is event name. eg "user.created" "user.*" "user.**" // - value: can be Listener or ListenerItem interface SubscribedEvents() map[string]any }
Subscriber event subscriber interface.
you can register multi event listeners in a struct func.