Advertisement
brulics

Untitled

Oct 20th, 2017
61
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Go 0.95 KB | None | 0 0
  1. package eventSourcing
  2.  
  3. type config struct {
  4.     listeners map[string][]Listener
  5. }
  6.  
  7. func (c *config) addListener(listener Listener, event EventName)  {
  8.     c.listeners = make(map[string][]Listener)
  9.     n := append(c.listeners[event.Name()], listener)
  10.     c.listeners[event.Name()] = n
  11. }
  12.  
  13. func (c *config) getListeners(event EventName) []Listener {
  14.     return c.listeners[event.Name()]
  15. }
  16.  
  17. type Listener interface {
  18.     Handle(event EventName)
  19. }
  20.  
  21. func handle(event chan EventName) {
  22.     en := <-event
  23.  
  24.     go func() {
  25.         c := &config
  26.         list := c.getListeners(en)
  27.  
  28.         for _, l := range list {
  29.             l.Handle(en)
  30.  
  31.         }
  32.  
  33.     }()
  34.     //switch en.Name() {
  35.     //case "peer.installed":
  36.     //  go func() {
  37.     //      j, err  := json.Marshal(en)
  38.     //
  39.     //      if err != nil {
  40.     //          panic(err)
  41.     //      }
  42.     //      ioutil.WriteFile("/tmp/peer_installed.txt", j, 0644)
  43.     //  }()
  44.     //}
  45. }
  46.  
  47. func DeclareListener(listener Listener, event EventName)  {
  48.  
  49.     c := config{}
  50.     c.addListener(listener, event)
  51. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement