Documentation ¶
Overview ¶
Package eventsource provides a pubsub.Topic that also stores the last published value in an atomic.Value.
Updating the value will result in a publish event.
Example ¶
// Create a new event source. e := New[int]() // Subscribe to changes. changes := e.SubscribeSync(nil) go func() { for change := range changes { fmt.Println("change:", change.Msg) change.Ack() } }() // Publish a set a value. err := e.PublishSync(1) if err != nil { log.Fatal(err) } // Set and publish a value. err = e.Store(2) if err != nil { log.Fatal(err) } fmt.Println(e.Load())
Output: change: 1 change: 2 2
Index ¶
Examples ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type EventSource ¶
EventSource is a pubsub.Topic that also stores the last published value in an atomic.Value.
Updating the value will result in a publish event.
func New ¶
func New[T any]() *EventSource[T]
func (*EventSource[T]) CompareAndSwap ¶
func (e *EventSource[T]) CompareAndSwap(old, new T) bool
func (*EventSource[T]) Load ¶
func (e *EventSource[T]) Load() T
func (*EventSource[T]) Store ¶
func (e *EventSource[T]) Store(value T) error
Store will store a new value and synchronously publish it to all subscribers.
It will return any errors from the publish.
func (*EventSource[T]) Swap ¶
func (e *EventSource[T]) Swap(value T) T
Click to show internal directories.
Click to hide internal directories.