util/eventbus: flesh out docs a bit

Updates #cleanup

Change-Id: Ia6b0e4b0426be1dd10a777aff0a81d4dd6b69b01
Signed-off-by: Brad Fitzpatrick <bradfitz@tailscale.com>
This commit is contained in:
Brad Fitzpatrick
2025-09-25 09:39:27 -07:00
committed by Brad Fitzpatrick
parent 0b27871860
commit a40f23ad4a
4 changed files with 11 additions and 3 deletions

View File

@@ -77,7 +77,7 @@ func (b *Bus) Debugger() *Debugger {
return &Debugger{b}
}
// Close closes the bus. Implicitly closes all clients, publishers and
// Close closes the bus. It implicitly closes all clients, publishers and
// subscribers attached to the bus.
//
// Close blocks until the bus is fully shut down. The bus is

View File

@@ -29,7 +29,7 @@ type Client struct {
func (c *Client) Name() string { return c.name }
// Close closes the client. Implicitly closes all publishers and
// Close closes the client. It implicitly closes all publishers and
// subscribers obtained from this client.
func (c *Client) Close() {
var (

View File

@@ -27,6 +27,10 @@ func newPublisher[T any](c *Client) *Publisher[T] {
// Close closes the publisher.
//
// Calls to Publish after Close silently do nothing.
//
// If the Bus or Client from which the Publisher was created is closed,
// the Publisher is implicitly closed and does not need to be closed
// separately.
func (p *Publisher[T]) Close() {
// Just unblocks any active calls to Publish, no other
// synchronization needed.

View File

@@ -158,7 +158,7 @@ func (q *subscribeState) subscriberFor(val any) subscriber {
return q.outputs[reflect.TypeOf(val)]
}
// Close closes the subscribeState. Implicitly closes all Subscribers
// Close closes the subscribeState. It implicitly closes all Subscribers
// linked to this state, and any pending events are discarded.
func (s *subscribeState) close() {
s.dispatcher.StopAndWait()
@@ -244,6 +244,10 @@ func (s *Subscriber[T]) Done() <-chan struct{} {
// Close closes the Subscriber, indicating the caller no longer wishes
// to receive this event type. After Close, receives on
// [Subscriber.Events] block for ever.
//
// If the Bus from which the Subscriber was created is closed,
// the Subscriber is implicitly closed and does not need to be closed
// separately.
func (s *Subscriber[T]) Close() {
s.stop.Stop() // unblock receivers
s.unregister()