1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162 |
- package event
- const (
- namedPrefixer = ":"
- )
- // Emitter able to emit events
- type Emitter interface {
- Emit(Event)
- }
- // Receiver able to listen to events
- type Receiver interface {
- On(name string, handler HandlerFunc)
- }
- // HandlerFunc func
- type HandlerFunc func(Event)
- // Event specific interface
- type Event interface {
- Name() string
- Data() interface{}
- }
- // private data
- type event struct {
- name string
- data interface{}
- }
- // New Event
- func New(name string, data interface{}) Event {
- return &event{name, data}
- }
- func (e *event) Name() string {
- return e.name
- }
- func (e *event) Data() interface{} {
- return e.data
- }
- // Prefixer
- // NamedEmitter data for event prefixer
- type NamedEmitter struct {
- name string
- bus Bus
- }
- // NewNamedEmitter creates a new emitter pointing to bus
- func NewNamedEmitter(name string, bus Bus) Emitter {
- return &NamedEmitter{name, bus}
- }
- // Emit will prefix with namedemitter name and push to bus
- func (ne *NamedEmitter) Emit(evt Event) {
- newEvt := &event{name: ne.name + namedPrefixer + evt.Name(), data: evt.Data()}
- ne.bus.Emit(newEvt)
- }
|