event.go 709 B

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. package event
  2. const (
  3. namedPrefixer = ":"
  4. )
  5. type (
  6. // Emitter able to emit events
  7. Emitter interface {
  8. Emit(name string, data interface{})
  9. }
  10. // Receiver able to listen to events
  11. Receiver interface {
  12. On(name string, handler HandlerFunc)
  13. }
  14. // HandlerFunc func
  15. HandlerFunc func(Event)
  16. // Event specific interface
  17. Event interface {
  18. Name() string
  19. Data() interface{}
  20. }
  21. // private data
  22. event struct {
  23. name string
  24. data interface{}
  25. }
  26. )
  27. // New Event
  28. func New(name string, data interface{}) Event {
  29. return &event{name, data}
  30. }
  31. func (e *event) Name() string {
  32. return e.name
  33. }
  34. func (e *event) Data() interface{} {
  35. return e.data
  36. }
  37. // Prefixer
  38. // NamedEmitter data for event prefixer