mirror of
				https://github.com/superseriousbusiness/gotosocial.git
				synced 2025-10-31 04:22:25 -05:00 
			
		
		
		
	
		
			
	
	
		
			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 | ||
|  | } |