eventstream

package
v0.0.10 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jul 26, 2023 License: Apache-2.0 Imports: 1 Imported by: 0

Documentation

Overview

Package eventstream implements a publisher / subscriber.

Index

Examples

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type EventStream

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

func NewEventStream

func NewEventStream() *EventStream

func (*EventStream) Publish

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

func (*EventStream) PublishUnsafe

func (es *EventStream) PublishUnsafe(evt interface{})

func (*EventStream) Subscribe

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

Subscribe subscribes to events

package main

import (
	"fmt"

	"github.com/qjpcpu/protoactor-go/eventstream"
)

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

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

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

	es.Unsubscribe(sub)

}
Output:

Hello World

func (*EventStream) Unsubscribe

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

type Predicate

type Predicate func(evt interface{}) bool

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

type Subscription

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 (*Subscription) WithPredicate

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

WithPredicate sets a predicate to filter messages passed to the subscriber

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL