mirror of https://github.com/grpc/grpc-go.git
internal: Exposes underlying channel in testutils.Channel{} (#6742)
This commit is contained in:
parent
b046ccaf08
commit
e88e8498c6
|
|
@ -26,19 +26,21 @@ const DefaultChanBufferSize = 1
|
|||
|
||||
// Channel wraps a generic channel and provides a timed receive operation.
|
||||
type Channel struct {
|
||||
ch chan any
|
||||
// C is the underlying channel on which values sent using the SendXxx() methods are delivered.
|
||||
// Tests which cannot use ReceiveXxx() for whatever reasons can use C to read the values.
|
||||
C chan any
|
||||
}
|
||||
|
||||
// Send sends value on the underlying channel.
|
||||
func (c *Channel) Send(value any) {
|
||||
c.ch <- value
|
||||
c.C <- value
|
||||
}
|
||||
|
||||
// SendContext sends value on the underlying channel, or returns an error if
|
||||
// the context expires.
|
||||
func (c *Channel) SendContext(ctx context.Context, value any) error {
|
||||
select {
|
||||
case c.ch <- value:
|
||||
case c.C <- value:
|
||||
return nil
|
||||
case <-ctx.Done():
|
||||
return ctx.Err()
|
||||
|
|
@ -49,7 +51,7 @@ func (c *Channel) SendContext(ctx context.Context, value any) error {
|
|||
// if successful or false if the channel was full.
|
||||
func (c *Channel) SendOrFail(value any) bool {
|
||||
select {
|
||||
case c.ch <- value:
|
||||
case c.C <- value:
|
||||
return true
|
||||
default:
|
||||
return false
|
||||
|
|
@ -60,7 +62,7 @@ func (c *Channel) SendOrFail(value any) bool {
|
|||
// and false if the channel was empty.
|
||||
func (c *Channel) ReceiveOrFail() (any, bool) {
|
||||
select {
|
||||
case got := <-c.ch:
|
||||
case got := <-c.C:
|
||||
return got, true
|
||||
default:
|
||||
return nil, false
|
||||
|
|
@ -73,7 +75,7 @@ func (c *Channel) Receive(ctx context.Context) (any, error) {
|
|||
select {
|
||||
case <-ctx.Done():
|
||||
return nil, ctx.Err()
|
||||
case got := <-c.ch:
|
||||
case got := <-c.C:
|
||||
return got, nil
|
||||
}
|
||||
}
|
||||
|
|
@ -86,9 +88,9 @@ func (c *Channel) Receive(ctx context.Context) (any, error) {
|
|||
func (c *Channel) Replace(value any) {
|
||||
for {
|
||||
select {
|
||||
case c.ch <- value:
|
||||
case c.C <- value:
|
||||
return
|
||||
case <-c.ch:
|
||||
case <-c.C:
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -100,5 +102,5 @@ func NewChannel() *Channel {
|
|||
|
||||
// NewChannelWithSize returns a new Channel with a buffer of bufSize.
|
||||
func NewChannelWithSize(bufSize int) *Channel {
|
||||
return &Channel{ch: make(chan any, bufSize)}
|
||||
return &Channel{C: make(chan any, bufSize)}
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue