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.
14const _ = grpc.SupportPackageIsVersion6
15
16// EchoClient is the client API for Echo service.
17//
18// 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.
19type EchoClient interface {
20	// UnaryEcho is unary echo.
21	UnaryEcho(ctx context.Context, in *EchoRequest, opts ...grpc.CallOption) (*EchoResponse, error)
22	// ServerStreamingEcho is server side streaming.
23	ServerStreamingEcho(ctx context.Context, in *EchoRequest, opts ...grpc.CallOption) (Echo_ServerStreamingEchoClient, error)
24	// ClientStreamingEcho is client side streaming.
25	ClientStreamingEcho(ctx context.Context, opts ...grpc.CallOption) (Echo_ClientStreamingEchoClient, error)
26	// BidirectionalStreamingEcho is bidi streaming.
27	BidirectionalStreamingEcho(ctx context.Context, opts ...grpc.CallOption) (Echo_BidirectionalStreamingEchoClient, error)
28}
29
30type echoClient struct {
31	cc grpc.ClientConnInterface
32}
33
34func NewEchoClient(cc grpc.ClientConnInterface) EchoClient {
35	return &echoClient{cc}
36}
37
38func (c *echoClient) UnaryEcho(ctx context.Context, in *EchoRequest, opts ...grpc.CallOption) (*EchoResponse, error) {
39	out := new(EchoResponse)
40	err := c.cc.Invoke(ctx, "/grpc.examples.echo.Echo/UnaryEcho", in, out, opts...)
41	if err != nil {
42		return nil, err
43	}
44	return out, nil
45}
46
47func (c *echoClient) ServerStreamingEcho(ctx context.Context, in *EchoRequest, opts ...grpc.CallOption) (Echo_ServerStreamingEchoClient, error) {
48	stream, err := c.cc.NewStream(ctx, &_Echo_serviceDesc.Streams[0], "/grpc.examples.echo.Echo/ServerStreamingEcho", opts...)
49	if err != nil {
50		return nil, err
51	}
52	x := &echoServerStreamingEchoClient{stream}
53	if err := x.ClientStream.SendMsg(in); err != nil {
54		return nil, err
55	}
56	if err := x.ClientStream.CloseSend(); err != nil {
57		return nil, err
58	}
59	return x, nil
60}
61
62type Echo_ServerStreamingEchoClient interface {
63	Recv() (*EchoResponse, error)
64	grpc.ClientStream
65}
66
67type echoServerStreamingEchoClient struct {
68	grpc.ClientStream
69}
70
71func (x *echoServerStreamingEchoClient) Recv() (*EchoResponse, error) {
72	m := new(EchoResponse)
73	if err := x.ClientStream.RecvMsg(m); err != nil {
74		return nil, err
75	}
76	return m, nil
77}
78
79func (c *echoClient) ClientStreamingEcho(ctx context.Context, opts ...grpc.CallOption) (Echo_ClientStreamingEchoClient, error) {
80	stream, err := c.cc.NewStream(ctx, &_Echo_serviceDesc.Streams[1], "/grpc.examples.echo.Echo/ClientStreamingEcho", opts...)
81	if err != nil {
82		return nil, err
83	}
84	x := &echoClientStreamingEchoClient{stream}
85	return x, nil
86}
87
88type Echo_ClientStreamingEchoClient interface {
89	Send(*EchoRequest) error
90	CloseAndRecv() (*EchoResponse, error)
91	grpc.ClientStream
92}
93
94type echoClientStreamingEchoClient struct {
95	grpc.ClientStream
96}
97
98func (x *echoClientStreamingEchoClient) Send(m *EchoRequest) error {
99	return x.ClientStream.SendMsg(m)
100}
101
102func (x *echoClientStreamingEchoClient) CloseAndRecv() (*EchoResponse, error) {
103	if err := x.ClientStream.CloseSend(); err != nil {
104		return nil, err
105	}
106	m := new(EchoResponse)
107	if err := x.ClientStream.RecvMsg(m); err != nil {
108		return nil, err
109	}
110	return m, nil
111}
112
113func (c *echoClient) BidirectionalStreamingEcho(ctx context.Context, opts ...grpc.CallOption) (Echo_BidirectionalStreamingEchoClient, error) {
114	stream, err := c.cc.NewStream(ctx, &_Echo_serviceDesc.Streams[2], "/grpc.examples.echo.Echo/BidirectionalStreamingEcho", opts...)
115	if err != nil {
116		return nil, err
117	}
118	x := &echoBidirectionalStreamingEchoClient{stream}
119	return x, nil
120}
121
122type Echo_BidirectionalStreamingEchoClient interface {
123	Send(*EchoRequest) error
124	Recv() (*EchoResponse, error)
125	grpc.ClientStream
126}
127
128type echoBidirectionalStreamingEchoClient struct {
129	grpc.ClientStream
130}
131
132func (x *echoBidirectionalStreamingEchoClient) Send(m *EchoRequest) error {
133	return x.ClientStream.SendMsg(m)
134}
135
136func (x *echoBidirectionalStreamingEchoClient) Recv() (*EchoResponse, error) {
137	m := new(EchoResponse)
138	if err := x.ClientStream.RecvMsg(m); err != nil {
139		return nil, err
140	}
141	return m, nil
142}
143
144// EchoServer is the server API for Echo service.
145// All implementations should embed UnimplementedEchoServer
146// for forward compatibility
147type EchoServer interface {
148	// UnaryEcho is unary echo.
149	UnaryEcho(context.Context, *EchoRequest) (*EchoResponse, error)
150	// ServerStreamingEcho is server side streaming.
151	ServerStreamingEcho(*EchoRequest, Echo_ServerStreamingEchoServer) error
152	// ClientStreamingEcho is client side streaming.
153	ClientStreamingEcho(Echo_ClientStreamingEchoServer) error
154	// BidirectionalStreamingEcho is bidi streaming.
155	BidirectionalStreamingEcho(Echo_BidirectionalStreamingEchoServer) error
156}
157
158// UnimplementedEchoServer should be embedded to have forward compatible implementations.
159type UnimplementedEchoServer struct {
160}
161
162func (*UnimplementedEchoServer) UnaryEcho(context.Context, *EchoRequest) (*EchoResponse, error) {
163	return nil, status.Errorf(codes.Unimplemented, "method UnaryEcho not implemented")
164}
165func (*UnimplementedEchoServer) ServerStreamingEcho(*EchoRequest, Echo_ServerStreamingEchoServer) error {
166	return status.Errorf(codes.Unimplemented, "method ServerStreamingEcho not implemented")
167}
168func (*UnimplementedEchoServer) ClientStreamingEcho(Echo_ClientStreamingEchoServer) error {
169	return status.Errorf(codes.Unimplemented, "method ClientStreamingEcho not implemented")
170}
171func (*UnimplementedEchoServer) BidirectionalStreamingEcho(Echo_BidirectionalStreamingEchoServer) error {
172	return status.Errorf(codes.Unimplemented, "method BidirectionalStreamingEcho not implemented")
173}
174
175func RegisterEchoServer(s *grpc.Server, srv EchoServer) {
176	s.RegisterService(&_Echo_serviceDesc, srv)
177}
178
179func _Echo_UnaryEcho_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
180	in := new(EchoRequest)
181	if err := dec(in); err != nil {
182		return nil, err
183	}
184	if interceptor == nil {
185		return srv.(EchoServer).UnaryEcho(ctx, in)
186	}
187	info := &grpc.UnaryServerInfo{
188		Server:     srv,
189		FullMethod: "/grpc.examples.echo.Echo/UnaryEcho",
190	}
191	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
192		return srv.(EchoServer).UnaryEcho(ctx, req.(*EchoRequest))
193	}
194	return interceptor(ctx, in, info, handler)
195}
196
197func _Echo_ServerStreamingEcho_Handler(srv interface{}, stream grpc.ServerStream) error {
198	m := new(EchoRequest)
199	if err := stream.RecvMsg(m); err != nil {
200		return err
201	}
202	return srv.(EchoServer).ServerStreamingEcho(m, &echoServerStreamingEchoServer{stream})
203}
204
205type Echo_ServerStreamingEchoServer interface {
206	Send(*EchoResponse) error
207	grpc.ServerStream
208}
209
210type echoServerStreamingEchoServer struct {
211	grpc.ServerStream
212}
213
214func (x *echoServerStreamingEchoServer) Send(m *EchoResponse) error {
215	return x.ServerStream.SendMsg(m)
216}
217
218func _Echo_ClientStreamingEcho_Handler(srv interface{}, stream grpc.ServerStream) error {
219	return srv.(EchoServer).ClientStreamingEcho(&echoClientStreamingEchoServer{stream})
220}
221
222type Echo_ClientStreamingEchoServer interface {
223	SendAndClose(*EchoResponse) error
224	Recv() (*EchoRequest, error)
225	grpc.ServerStream
226}
227
228type echoClientStreamingEchoServer struct {
229	grpc.ServerStream
230}
231
232func (x *echoClientStreamingEchoServer) SendAndClose(m *EchoResponse) error {
233	return x.ServerStream.SendMsg(m)
234}
235
236func (x *echoClientStreamingEchoServer) Recv() (*EchoRequest, error) {
237	m := new(EchoRequest)
238	if err := x.ServerStream.RecvMsg(m); err != nil {
239		return nil, err
240	}
241	return m, nil
242}
243
244func _Echo_BidirectionalStreamingEcho_Handler(srv interface{}, stream grpc.ServerStream) error {
245	return srv.(EchoServer).BidirectionalStreamingEcho(&echoBidirectionalStreamingEchoServer{stream})
246}
247
248type Echo_BidirectionalStreamingEchoServer interface {
249	Send(*EchoResponse) error
250	Recv() (*EchoRequest, error)
251	grpc.ServerStream
252}
253
254type echoBidirectionalStreamingEchoServer struct {
255	grpc.ServerStream
256}
257
258func (x *echoBidirectionalStreamingEchoServer) Send(m *EchoResponse) error {
259	return x.ServerStream.SendMsg(m)
260}
261
262func (x *echoBidirectionalStreamingEchoServer) Recv() (*EchoRequest, error) {
263	m := new(EchoRequest)
264	if err := x.ServerStream.RecvMsg(m); err != nil {
265		return nil, err
266	}
267	return m, nil
268}
269
270var _Echo_serviceDesc = grpc.ServiceDesc{
271	ServiceName: "grpc.examples.echo.Echo",
272	HandlerType: (*EchoServer)(nil),
273	Methods: []grpc.MethodDesc{
274		{
275			MethodName: "UnaryEcho",
276			Handler:    _Echo_UnaryEcho_Handler,
277		},
278	},
279	Streams: []grpc.StreamDesc{
280		{
281			StreamName:    "ServerStreamingEcho",
282			Handler:       _Echo_ServerStreamingEcho_Handler,
283			ServerStreams: true,
284		},
285		{
286			StreamName:    "ClientStreamingEcho",
287			Handler:       _Echo_ClientStreamingEcho_Handler,
288			ClientStreams: true,
289		},
290		{
291			StreamName:    "BidirectionalStreamingEcho",
292			Handler:       _Echo_BidirectionalStreamingEcho_Handler,
293			ServerStreams: true,
294			ClientStreams: true,
295		},
296	},
297	Metadata: "examples/features/proto/echo/echo.proto",
298}
299