protoactor-go: github.com/AsynkronIT/protoactor-go/eventstream Index | Examples | Files

package eventstream

import "github.com/AsynkronIT/protoactor-go/eventstream"

Package eventstream implements a publisher / subscriber.

Index

Examples

Package Files

doc.go eventstream.go

func Publish Uses

func Publish(event interface{})

func Unsubscribe Uses

func Unsubscribe(sub *Subscription)

type EventStream Uses

type EventStream struct {
    sync.RWMutex
    // contains filtered or unexported fields
}

func (*EventStream) Publish Uses

func (ps *EventStream) Publish(evt interface{})

func (*EventStream) Subscribe Uses

func (es *EventStream) Subscribe(fn func(evt interface{})) *Subscription

func (*EventStream) Unsubscribe Uses

func (ps *EventStream) Unsubscribe(sub *Subscription)

type Predicate Uses

type Predicate func(evt interface{}) bool

Predicate is a function used to filter messages before being forwarded to a subscriber

type Subscription Uses

type Subscription struct {
    // contains filtered or unexported fields
}

Subscription is returned from the Subscribe function.

This value and can be passed to Unsubscribe when the observer is no longer interested in receiving messages

func Subscribe Uses

func Subscribe(fn func(evt interface{})) *Subscription

Subscribe subscribes to events

Code:

sub := eventstream.Subscribe(func(event interface{}) {
    fmt.Println(event)
})

// only allow strings
sub.WithPredicate(func(evt interface{}) bool {
    _, ok := evt.(string)
    return ok
})

eventstream.Publish("Hello World")
eventstream.Publish(1)

eventstream.Unsubscribe(sub)

Output:

Hello World

func (*Subscription) WithPredicate Uses

func (s *Subscription) WithPredicate(p Predicate) *Subscription

WithPredicate sets a predicate to filter messages passed to the subscriber

Package eventstream imports 1 packages (graph) and is imported by 4 packages. Updated 2017-05-20. Refresh now. Tools for package owners.