diff --git a/interface.go b/interface.go index 8f3c42b..bff5d46 100644 --- a/interface.go +++ b/interface.go @@ -10,7 +10,8 @@ var closeEmit struct{} type subSettings struct { forcedType reflect.Type } -type SubOption func(*subSettings) error + +type SubOption func(interface{}) error // ForceSubType is a Subscribe option which overrides the type to which // the subscription will be done. Note that the evtType must be assignable @@ -29,7 +30,8 @@ type SubOption func(*subSettings) error // cancel, err := eventbus.Subscribe(eventCh, event.ForceSubType(new(Event))) // [...] func ForceSubType(evtType interface{}) SubOption { - return func(s *subSettings) error { + return func(settings interface{}) error { + s := settings.(*subSettings) typ := reflect.TypeOf(evtType) if typ.Kind() != reflect.Ptr { return errors.New("ForceSubType called with non-pointer type") @@ -42,7 +44,7 @@ func ForceSubType(evtType interface{}) SubOption { type emitterSettings struct { makeStateful bool } -type EmitterOption func(*emitterSettings) +type EmitterOption func(interface{}) error // Stateful is an Emitter option which makes makes the eventbus channel // 'remember' last event sent, and when a new subscriber joins the