bus.go 559 B

123456789101112131415161718192021222324252627
  1. package broker
  2. import (
  3. "context"
  4. )
  5. type Broker interface {
  6. WithContext(ctx context.Context)
  7. Publish(e *Event)
  8. Dispatch(e *Event) (err error)
  9. DispatchCtx(ctx context.Context, e *Event) (err error)
  10. Subscribe(sub Subscriber) (err error)
  11. UnSubscribe(sub Subscriber) (err error)
  12. Subscribers() []Subscriber
  13. }
  14. func FromContext(ctx context.Context) Broker {
  15. if v := ctx.Value("bus"); v != nil {
  16. return v.(Broker)
  17. } else {
  18. return nil
  19. }
  20. }
  21. func WitchContext(ctx context.Context, b Broker) context.Context {
  22. return context.WithValue(ctx, "bus", b)
  23. }