mirror of
https://github.com/libp2p/go-eventbus.git
synced 2024-12-27 23:30:12 +08:00
Document options
This commit is contained in:
parent
71ffb0ebf1
commit
1cb839f3b0
24
interface.go
24
interface.go
@ -10,6 +10,22 @@ type SubSettings struct {
|
|||||||
}
|
}
|
||||||
type SubOption func(*SubSettings) error
|
type SubOption func(*SubSettings) error
|
||||||
|
|
||||||
|
// ForceSubType is a Subscribe option which overrides the type to which
|
||||||
|
// the subscription will be done. Note that the evtType must be assignable
|
||||||
|
// to channel type.
|
||||||
|
//
|
||||||
|
// This also allows for subscribing to multiple eventbus channels with one
|
||||||
|
// Go channel to get better ordering guarantees.
|
||||||
|
//
|
||||||
|
// Example:
|
||||||
|
// type Event struct{}
|
||||||
|
// func (Event) String() string {
|
||||||
|
// return "event"
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
// eventCh := make(chan fmt.Stringer) // interface { String() string }
|
||||||
|
// cancel, err := eventbus.Subscribe(eventCh, event.ForceSubType(new(Event)))
|
||||||
|
// [...]
|
||||||
func ForceSubType(evtType interface{}) SubOption {
|
func ForceSubType(evtType interface{}) SubOption {
|
||||||
return func(s *SubSettings) error {
|
return func(s *SubSettings) error {
|
||||||
typ := reflect.TypeOf(evtType)
|
typ := reflect.TypeOf(evtType)
|
||||||
@ -26,10 +42,18 @@ type EmitterSettings struct{
|
|||||||
}
|
}
|
||||||
type EmitterOption func(*EmitterSettings)
|
type EmitterOption func(*EmitterSettings)
|
||||||
|
|
||||||
|
// Stateful is an Emitter option which makes makes the eventbus channel
|
||||||
|
// 'remember' last event sent, and when a new subscriber joins the
|
||||||
|
// bus, the remembered event is immediately sent to the subscription
|
||||||
|
// channel.
|
||||||
|
//
|
||||||
|
// This allows to provide state tracking for dynamic systems, and/or
|
||||||
|
// allows new subscribers to verify that there are Emitters on the channel
|
||||||
func Stateful(s *EmitterSettings) {
|
func Stateful(s *EmitterSettings) {
|
||||||
s.makeStateful = true
|
s.makeStateful = true
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Bus is an interface to type-based event delivery system
|
||||||
type Bus interface {
|
type Bus interface {
|
||||||
// Subscribe creates new subscription. Failing to drain the channel will cause
|
// Subscribe creates new subscription. Failing to drain the channel will cause
|
||||||
// publishers to get blocked
|
// publishers to get blocked
|
||||||
|
Loading…
Reference in New Issue
Block a user