1// Code generated by protoc-gen-go-grpc. DO NOT EDIT.
2
3package echo
4
5import (
6	context "context"
7	grpc "google.golang.org/grpc"
8	codes "google.golang.org/grpc/codes"
9	status "google.golang.org/grpc/status"
10)
11
12// This is a compile-time assertion to ensure that this generated file
13// is compatible with the grpc package it is being compiled against.
14// Requires gRPC-Go v1.32.0 or later.
15const _ = grpc.SupportPackageIsVersion7
16
17// EchoClient is the client API for Echo service.
18//
19// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream.
20type EchoClient interface {
21	// UnaryEcho is unary echo.
22	UnaryEcho(ctx context.Context, in *EchoRequest, opts ...grpc.CallOption) (*EchoResponse, error)
23	// ServerStreamingEcho is server side streaming.
24	ServerStreamingEcho(ctx context.Context, in *EchoRequest, opts ...grpc.CallOption) (Echo_ServerStreamingEchoClient, error)
25	// ClientStreamingEcho is client side streaming.
26	ClientStreamingEcho(ctx context.Context, opts ...grpc.CallOption) (Echo_ClientStreamingEchoClient, error)
27	// BidirectionalStreamingEcho is bidi streaming.
28	BidirectionalStreamingEcho(ctx context.Context, opts ...grpc.CallOption) (Echo_BidirectionalStreamingEchoClient, error)
29}
30
31type echoClient struct {
32	cc grpc.ClientConnInterface
33}
34
35func NewEchoClient(cc grpc.ClientConnInterface) EchoClient {
36	return &echoClient{cc}
37}
38
39func (c *echoClient) UnaryEcho(ctx context.Context, in *EchoRequest, opts ...grpc.CallOption) (*EchoResponse, error) {
40	out := new(EchoResponse)
41	err := c.cc.Invoke(ctx, "/grpc.examples.echo.Echo/UnaryEcho", in, out, opts...)
42	if err != nil {
43		return nil, err
44	}
45	return out, nil
46}
47
48func (c *echoClient) ServerStreamingEcho(ctx context.Context, in *EchoRequest, opts ...grpc.CallOption) (Echo_ServerStreamingEchoClient, error) {
49	stream, err := c.cc.NewStream(ctx, &Echo_ServiceDesc.Streams[0], "/grpc.examples.echo.Echo/ServerStreamingEcho", opts...)
50	if err != nil {
51		return nil, err
52	}
53	x := &echoServerStreamingEchoClient{stream}
54	if err := x.ClientStream.SendMsg(in); err != nil {
55		return nil, err
56	}
57	if err := x.ClientStream.CloseSend(); err != nil {
58		return nil, err
59	}
60	return x, nil
61}
62
63type Echo_ServerStreamingEchoClient interface {
64	Recv() (*EchoResponse, error)
65	grpc.ClientStream
66}
67
68type echoServerStreamingEchoClient struct {
69	grpc.ClientStream
70}
71
72func (x *echoServerStreamingEchoClient) Recv() (*EchoResponse, error) {
73	m := new(EchoResponse)
74	if err := x.ClientStream.RecvMsg(m); err != nil {
75		return nil, err
76	}
77	return m, nil
78}
79
80func (c *echoClient) ClientStreamingEcho(ctx context.Context, opts ...grpc.CallOption) (Echo_ClientStreamingEchoClient, error) {
81	stream, err := c.cc.NewStream(ctx, &Echo_ServiceDesc.Streams[1], "/grpc.examples.echo.Echo/ClientStreamingEcho", opts...)
82	if err != nil {
83		return nil, err
84	}
85	x := &echoClientStreamingEchoClient{stream}
86	return x, nil
87}
88
89type Echo_ClientStreamingEchoClient interface {
90	Send(*EchoRequest) error
91	CloseAndRecv() (*EchoResponse, error)
92	grpc.ClientStream
93}
94
95type echoClientStreamingEchoClient struct {
96	grpc.ClientStream
97}
98
99func (x *echoClientStreamingEchoClient) Send(m *EchoRequest) error {
100	return x.ClientStream.SendMsg(m)
101}
102
103func (x *echoClientStreamingEchoClient) CloseAndRecv() (*EchoResponse, error) {
104	if err := x.ClientStream.CloseSend(); err != nil {
105		return nil, err
106	}
107	m := new(EchoResponse)
108	if err := x.ClientStream.RecvMsg(m); err != nil {
109		return nil, err
110	}
111	return m, nil
112}
113
114func (c *echoClient) BidirectionalStreamingEcho(ctx context.Context, opts ...grpc.CallOption) (Echo_BidirectionalStreamingEchoClient, error) {
115	stream, err := c.cc.NewStream(ctx, &Echo_ServiceDesc.Streams[2], "/grpc.examples.echo.Echo/BidirectionalStreamingEcho", opts...)
116	if err != nil {
117		return nil, err
118	}
119	x := &echoBidirectionalStreamingEchoClient{stream}
120	return x, nil
121}
122
123type Echo_BidirectionalStreamingEchoClient interface {
124	Send(*EchoRequest) error
125	Recv() (*EchoResponse, error)
126	grpc.ClientStream
127}
128
129type echoBidirectionalStreamingEchoClient struct {
130	grpc.ClientStream
131}
132
133func (x *echoBidirectionalStreamingEchoClient) Send(m *EchoRequest) error {
134	return x.ClientStream.SendMsg(m)
135}
136
137func (x *echoBidirectionalStreamingEchoClient) Recv() (*EchoResponse, error) {
138	m := new(EchoResponse)
139	if err := x.ClientStream.RecvMsg(m); err != nil {
140		return nil, err
141	}
142	return m, nil
143}
144
145// EchoServer is the server API for Echo service.
146// All implementations must embed UnimplementedEchoServer
147// for forward compatibility
148type EchoServer interface {
149	// UnaryEcho is unary echo.
150	UnaryEcho(context.Context, *EchoRequest) (*EchoResponse, error)
151	// ServerStreamingEcho is server side streaming.
152	ServerStreamingEcho(*EchoRequest, Echo_ServerStreamingEchoServer) error
153	// ClientStreamingEcho is client side streaming.
154	ClientStreamingEcho(Echo_ClientStreamingEchoServer) error
155	// BidirectionalStreamingEcho is bidi streaming.
156	BidirectionalStreamingEcho(Echo_BidirectionalStreamingEchoServer) error
157	mustEmbedUnimplementedEchoServer()
158}
159
160// UnimplementedEchoServer must be embedded to have forward compatible implementations.
161type UnimplementedEchoServer struct {
162}
163
164func (UnimplementedEchoServer) UnaryEcho(context.Context, *EchoRequest) (*EchoResponse, error) {
165	return nil, status.Errorf(codes.Unimplemented, "method UnaryEcho not implemented")
166}
167func (UnimplementedEchoServer) ServerStreamingEcho(*EchoRequest, Echo_ServerStreamingEchoServer) error {
168	return status.Errorf(codes.Unimplemented, "method ServerStreamingEcho not implemented")
169}
170func (UnimplementedEchoServer) ClientStreamingEcho(Echo_ClientStreamingEchoServer) error {
171	return status.Errorf(codes.Unimplemented, "method ClientStreamingEcho not implemented")
172}
173func (UnimplementedEchoServer) BidirectionalStreamingEcho(Echo_BidirectionalStreamingEchoServer) error {
174	return status.Errorf(codes.Unimplemented, "method BidirectionalStreamingEcho not implemented")
175}
176func (UnimplementedEchoServer) mustEmbedUnimplementedEchoServer() {}
177
178// UnsafeEchoServer may be embedded to opt out of forward compatibility for this service.
179// Use of this interface is not recommended, as added methods to EchoServer will
180// result in compilation errors.
181type UnsafeEchoServer interface {
182	mustEmbedUnimplementedEchoServer()
183}
184
185func RegisterEchoServer(s grpc.ServiceRegistrar, srv EchoServer) {
186	s.RegisterService(&Echo_ServiceDesc, srv)
187}
188
189func _Echo_UnaryEcho_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
190	in := new(EchoRequest)
191	if err := dec(in); err != nil {
192		return nil, err
193	}
194	if interceptor == nil {
195		return srv.(EchoServer).UnaryEcho(ctx, in)
196	}
197	info := &grpc.UnaryServerInfo{
198		Server:     srv,
199		FullMethod: "/grpc.examples.echo.Echo/UnaryEcho",
200	}
201	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
202		return srv.(EchoServer).UnaryEcho(ctx, req.(*EchoRequest))
203	}
204	return interceptor(ctx, in, info, handler)
205}
206
207func _Echo_ServerStreamingEcho_Handler(srv interface{}, stream grpc.ServerStream) error {
208	m := new(EchoRequest)
209	if err := stream.RecvMsg(m); err != nil {
210		return err
211	}
212	return srv.(EchoServer).ServerStreamingEcho(m, &echoServerStreamingEchoServer{stream})
213}
214
215type Echo_ServerStreamingEchoServer interface {
216	Send(*EchoResponse) error
217	grpc.ServerStream
218}
219
220type echoServerStreamingEchoServer struct {
221	grpc.ServerStream
222}
223
224func (x *echoServerStreamingEchoServer) Send(m *EchoResponse) error {
225	return x.ServerStream.SendMsg(m)
226}
227
228func _Echo_ClientStreamingEcho_Handler(srv interface{}, stream grpc.ServerStream) error {
229	return srv.(EchoServer).ClientStreamingEcho(&echoClientStreamingEchoServer{stream})
230}
231
232type Echo_ClientStreamingEchoServer interface {
233	SendAndClose(*EchoResponse) error
234	Recv() (*EchoRequest, error)
235	grpc.ServerStream
236}
237
238type echoClientStreamingEchoServer struct {
239	grpc.ServerStream
240}
241
242func (x *echoClientStreamingEchoServer) SendAndClose(m *EchoResponse) error {
243	return x.ServerStream.SendMsg(m)
244}
245
246func (x *echoClientStreamingEchoServer) Recv() (*EchoRequest, error) {
247	m := new(EchoRequest)
248	if err := x.ServerStream.RecvMsg(m); err != nil {
249		return nil, err
250	}
251	return m, nil
252}
253
254func _Echo_BidirectionalStreamingEcho_Handler(srv interface{}, stream grpc.ServerStream) error {
255	return srv.(EchoServer).BidirectionalStreamingEcho(&echoBidirectionalStreamingEchoServer{stream})
256}
257
258type Echo_BidirectionalStreamingEchoServer interface {
259	Send(*EchoResponse) error
260	Recv() (*EchoRequest, error)
261	grpc.ServerStream
262}
263
264type echoBidirectionalStreamingEchoServer struct {
265	grpc.ServerStream
266}
267
268func (x *echoBidirectionalStreamingEchoServer) Send(m *EchoResponse) error {
269	return x.ServerStream.SendMsg(m)
270}
271
272func (x *echoBidirectionalStreamingEchoServer) Recv() (*EchoRequest, error) {
273	m := new(EchoRequest)
274	if err := x.ServerStream.RecvMsg(m); err != nil {
275		return nil, err
276	}
277	return m, nil
278}
279
280// Echo_ServiceDesc is the grpc.ServiceDesc for Echo service.
281// It's only intended for direct use with grpc.RegisterService,
282// and not to be introspected or modified (even as a copy)
283var Echo_ServiceDesc = grpc.ServiceDesc{
284	ServiceName: "grpc.examples.echo.Echo",
285	HandlerType: (*EchoServer)(nil),
286	Methods: []grpc.MethodDesc{
287		{
288			MethodName: "UnaryEcho",
289			Handler:    _Echo_UnaryEcho_Handler,
290		},
291	},
292	Streams: []grpc.StreamDesc{
293		{
294			StreamName:    "ServerStreamingEcho",
295			Handler:       _Echo_ServerStreamingEcho_Handler,
296			ServerStreams: true,
297		},
298		{
299			StreamName:    "ClientStreamingEcho",
300			Handler:       _Echo_ClientStreamingEcho_Handler,
301			ClientStreams: true,
302		},
303		{
304			StreamName:    "BidirectionalStreamingEcho",
305			Handler:       _Echo_BidirectionalStreamingEcho_Handler,
306			ServerStreams: true,
307			ClientStreams: true,
308		},
309	},
310	Metadata: "examples/features/proto/echo/echo.proto",
311}
312