Involved Source Files Package buffer provides an implementation of an unbounded buffer.
Package-Level Type Names (only one, which is exported)
/* sort exporteds by: | */
Unbounded is an implementation of an unbounded buffer which does not use
extra goroutines. This is typically used for passing updates from one entity
to another within gRPC.
All methods on this type are thread-safe and don't block on anything except
the underlying mutex used for synchronization.
Unbounded supports values of any type to be stored in it by using a channel
of `any`. This means that a call to Put() incurs an extra memory allocation,
and also that users need a type assertion while reading. For performance
critical code paths, using Unbounded is strongly discouraged and defining a
new type specific implementation of this buffer is preferred. See
internal/transport/transport.go for an example of this.backlog[]anycchan anyclosedboolclosingboolmusync.Mutex Close closes the unbounded buffer. No subsequent data may be Put(), and the
channel returned from Get() will be closed after all the data is read and
Load() is called for the final time. Get returns a read channel on which values added to the buffer, via Put(),
are sent on.
Upon reading a value from this channel, users are expected to call Load() to
send the next buffered value onto the channel if there is any.
If the unbounded buffer is closed, the read channel returned by this method
is closed after all data is drained. Load sends the earliest buffered data, if any, onto the read channel returned
by Get(). Users are expected to call this every time they successfully read a
value from the read channel. Put adds t to the unbounded buffer.
func NewUnbounded() *Unbounded
Package-Level Functions (only one, which is exported)
NewUnbounded returns a new instance of Unbounded.
Package-Level Variables (only one, which is unexported)