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.