32 lines
		
	
	
		
			773 B
		
	
	
	
		
			Go
		
	
	
	
			
		
		
	
	
			32 lines
		
	
	
		
			773 B
		
	
	
	
		
			Go
		
	
	
	
| package mocks
 | |
| 
 | |
| import (
 | |
| 	"io"
 | |
| 
 | |
| 	"google.golang.org/grpc"
 | |
| )
 | |
| 
 | |
| // ServerStreamClient is a mock which satisfies the grpc.ClientStream interface,
 | |
| // allowing it to be returned by methods where the server returns a stream of
 | |
| // results. It can be populated with a list of results to return, or an error
 | |
| // to return.
 | |
| type ServerStreamClient[T any] struct {
 | |
| 	grpc.ClientStream
 | |
| 	Results []*T
 | |
| 	Err     error
 | |
| }
 | |
| 
 | |
| // Recv returns the error, if populated. Otherwise it returns the next item from
 | |
| // the list of results. If it has returned all items already, it returns EOF.
 | |
| func (c *ServerStreamClient[T]) Recv() (*T, error) {
 | |
| 	if c.Err != nil {
 | |
| 		return nil, c.Err
 | |
| 	}
 | |
| 	if len(c.Results) == 0 {
 | |
| 		return nil, io.EOF
 | |
| 	}
 | |
| 	res := c.Results[0]
 | |
| 	c.Results = c.Results[1:]
 | |
| 	return res, nil
 | |
| }
 |