153 lines
		
	
	
		
			5.6 KiB
		
	
	
	
		
			Go
		
	
	
	
			
		
		
	
	
			153 lines
		
	
	
		
			5.6 KiB
		
	
	
	
		
			Go
		
	
	
	
| /*
 | |
|  *
 | |
|  * Copyright 2024 gRPC authors.
 | |
|  *
 | |
|  * Licensed under the Apache License, Version 2.0 (the "License");
 | |
|  * you may not use this file except in compliance with the License.
 | |
|  * You may obtain a copy of the License at
 | |
|  *
 | |
|  *     http://www.apache.org/licenses/LICENSE-2.0
 | |
|  *
 | |
|  * Unless required by applicable law or agreed to in writing, software
 | |
|  * distributed under the License is distributed on an "AS IS" BASIS,
 | |
|  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 | |
|  * See the License for the specific language governing permissions and
 | |
|  * limitations under the License.
 | |
|  *
 | |
|  */
 | |
| 
 | |
| package grpc
 | |
| 
 | |
| // ServerStreamingClient represents the client side of a server-streaming (one
 | |
| // request, many responses) RPC. It is generic over the type of the response
 | |
| // message. It is used in generated code.
 | |
| type ServerStreamingClient[Res any] interface {
 | |
| 	Recv() (*Res, error)
 | |
| 	ClientStream
 | |
| }
 | |
| 
 | |
| // ServerStreamingServer represents the server side of a server-streaming (one
 | |
| // request, many responses) RPC. It is generic over the type of the response
 | |
| // message. It is used in generated code.
 | |
| type ServerStreamingServer[Res any] interface {
 | |
| 	Send(*Res) error
 | |
| 	ServerStream
 | |
| }
 | |
| 
 | |
| // ClientStreamingClient represents the client side of a client-streaming (many
 | |
| // requests, one response) RPC. It is generic over both the type of the request
 | |
| // message stream and the type of the unary response message. It is used in
 | |
| // generated code.
 | |
| type ClientStreamingClient[Req any, Res any] interface {
 | |
| 	Send(*Req) error
 | |
| 	CloseAndRecv() (*Res, error)
 | |
| 	ClientStream
 | |
| }
 | |
| 
 | |
| // ClientStreamingServer represents the server side of a client-streaming (many
 | |
| // requests, one response) RPC. It is generic over both the type of the request
 | |
| // message stream and the type of the unary response message. It is used in
 | |
| // generated code.
 | |
| type ClientStreamingServer[Req any, Res any] interface {
 | |
| 	Recv() (*Req, error)
 | |
| 	SendAndClose(*Res) error
 | |
| 	ServerStream
 | |
| }
 | |
| 
 | |
| // BidiStreamingClient represents the client side of a bidirectional-streaming
 | |
| // (many requests, many responses) RPC. It is generic over both the type of the
 | |
| // request message stream and the type of the response message stream. It is
 | |
| // used in generated code.
 | |
| type BidiStreamingClient[Req any, Res any] interface {
 | |
| 	Send(*Req) error
 | |
| 	Recv() (*Res, error)
 | |
| 	ClientStream
 | |
| }
 | |
| 
 | |
| // BidiStreamingServer represents the server side of a bidirectional-streaming
 | |
| // (many requests, many responses) RPC. It is generic over both the type of the
 | |
| // request message stream and the type of the response message stream. It is
 | |
| // used in generated code.
 | |
| type BidiStreamingServer[Req any, Res any] interface {
 | |
| 	Recv() (*Req, error)
 | |
| 	Send(*Res) error
 | |
| 	ServerStream
 | |
| }
 | |
| 
 | |
| // GenericClientStream implements the ServerStreamingClient, ClientStreamingClient,
 | |
| // and BidiStreamingClient interfaces. It is used in generated code.
 | |
| type GenericClientStream[Req any, Res any] struct {
 | |
| 	ClientStream
 | |
| }
 | |
| 
 | |
| var _ ServerStreamingClient[string] = (*GenericClientStream[int, string])(nil)
 | |
| var _ ClientStreamingClient[int, string] = (*GenericClientStream[int, string])(nil)
 | |
| var _ BidiStreamingClient[int, string] = (*GenericClientStream[int, string])(nil)
 | |
| 
 | |
| // Send pushes one message into the stream of requests to be consumed by the
 | |
| // server. The type of message which can be sent is determined by the Req type
 | |
| // parameter of the GenericClientStream receiver.
 | |
| func (x *GenericClientStream[Req, Res]) Send(m *Req) error {
 | |
| 	return x.ClientStream.SendMsg(m)
 | |
| }
 | |
| 
 | |
| // Recv reads one message from the stream of responses generated by the server.
 | |
| // The type of the message returned is determined by the Res type parameter
 | |
| // of the GenericClientStream receiver.
 | |
| func (x *GenericClientStream[Req, Res]) Recv() (*Res, error) {
 | |
| 	m := new(Res)
 | |
| 	if err := x.ClientStream.RecvMsg(m); err != nil {
 | |
| 		return nil, err
 | |
| 	}
 | |
| 	return m, nil
 | |
| }
 | |
| 
 | |
| // CloseAndRecv closes the sending side of the stream, then receives the unary
 | |
| // response from the server. The type of message which it returns is determined
 | |
| // by the Res type parameter of the GenericClientStream receiver.
 | |
| func (x *GenericClientStream[Req, Res]) CloseAndRecv() (*Res, error) {
 | |
| 	if err := x.ClientStream.CloseSend(); err != nil {
 | |
| 		return nil, err
 | |
| 	}
 | |
| 	m := new(Res)
 | |
| 	if err := x.ClientStream.RecvMsg(m); err != nil {
 | |
| 		return nil, err
 | |
| 	}
 | |
| 	return m, nil
 | |
| }
 | |
| 
 | |
| // GenericServerStream implements the ServerStreamingServer, ClientStreamingServer,
 | |
| // and BidiStreamingServer interfaces. It is used in generated code.
 | |
| type GenericServerStream[Req any, Res any] struct {
 | |
| 	ServerStream
 | |
| }
 | |
| 
 | |
| var _ ServerStreamingServer[string] = (*GenericServerStream[int, string])(nil)
 | |
| var _ ClientStreamingServer[int, string] = (*GenericServerStream[int, string])(nil)
 | |
| var _ BidiStreamingServer[int, string] = (*GenericServerStream[int, string])(nil)
 | |
| 
 | |
| // Send pushes one message into the stream of responses to be consumed by the
 | |
| // client. The type of message which can be sent is determined by the Res
 | |
| // type parameter of the serverStreamServer receiver.
 | |
| func (x *GenericServerStream[Req, Res]) Send(m *Res) error {
 | |
| 	return x.ServerStream.SendMsg(m)
 | |
| }
 | |
| 
 | |
| // SendAndClose pushes the unary response to the client. The type of message
 | |
| // which can be sent is determined by the Res type parameter of the
 | |
| // clientStreamServer receiver.
 | |
| func (x *GenericServerStream[Req, Res]) SendAndClose(m *Res) error {
 | |
| 	return x.ServerStream.SendMsg(m)
 | |
| }
 | |
| 
 | |
| // Recv reads one message from the stream of requests generated by the client.
 | |
| // The type of the message returned is determined by the Req type parameter
 | |
| // of the clientStreamServer receiver.
 | |
| func (x *GenericServerStream[Req, Res]) Recv() (*Req, error) {
 | |
| 	m := new(Req)
 | |
| 	if err := x.ServerStream.RecvMsg(m); err != nil {
 | |
| 		return nil, err
 | |
| 	}
 | |
| 	return m, nil
 | |
| }
 |