memory.go 770 B

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. package subscriber
  2. import (
  3. "context"
  4. "fmt"
  5. "git.nspix.com/golang/micro/broker"
  6. "reflect"
  7. )
  8. type Memory struct {
  9. Id string
  10. topic string
  11. cb broker.HandleFunc
  12. }
  13. func (sub *Memory) ID() string {
  14. return sub.Id
  15. }
  16. func (sub *Memory) HasTopic(topic string) bool {
  17. return sub.topic == topic || sub.topic == "ALL"
  18. }
  19. func (sub *Memory) OnAttach() (err error) {
  20. return
  21. }
  22. func (sub *Memory) Process(ctx context.Context, e *broker.Event) (err error) {
  23. if sub.cb != nil {
  24. err = sub.cb(ctx, e)
  25. }
  26. return
  27. }
  28. func (sub *Memory) OnDetach() (err error) {
  29. return
  30. }
  31. func NewMemorySubscriber(topic string, cb broker.HandleFunc) *Memory {
  32. id := topic + ":" + fmt.Sprint(reflect.ValueOf(cb).Pointer())
  33. return &Memory{
  34. Id: id,
  35. topic: topic,
  36. cb: cb,
  37. }
  38. }