bus.go 510 B

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