package event const ( namedPrefixer = ":" ) type ( // Emitter able to emit events Emitter interface { Emit(name string, data interface{}) } // Receiver able to listen to events Receiver interface { On(name string, handler HandlerFunc) } // HandlerFunc func HandlerFunc func(Event) // Event specific interface Event interface { Name() string Data() interface{} } // private data 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