1
2
3
4
5
10 package echoserver
11
12 import (
13 "io"
14 "net/http"
15
16 "github.com/golang/protobuf/proto"
17 "github.com/grpc-ecosystem/grpc-gateway/runtime"
18 "github.com/grpc-ecosystem/grpc-gateway/utilities"
19 "golang.org/x/net/context"
20 "google.golang.org/grpc"
21 "google.golang.org/grpc/codes"
22 "google.golang.org/grpc/grpclog"
23 "google.golang.org/grpc/status"
24 )
25
26 var _ codes.Code
27 var _ io.Reader
28 var _ status.Status
29 var _ = runtime.String
30 var _ = utilities.NewDoubleArray
31
32 func request_EchoService_Echo_0(ctx context.Context, marshaler runtime.Marshaler, client EchoServiceClient, req *http.Request, pathParams map[string]string) (EchoService_EchoClient, runtime.ServerMetadata, error) {
33 var metadata runtime.ServerMetadata
34 stream, err := client.Echo(ctx)
35 if err != nil {
36 grpclog.Printf("Failed to start streaming: %v", err)
37 return nil, metadata, err
38 }
39 dec := marshaler.NewDecoder(req.Body)
40 handleSend := func() error {
41 var protoReq EchoRequest
42 err = dec.Decode(&protoReq)
43 if err == io.EOF {
44 return err
45 }
46 if err != nil {
47 grpclog.Printf("Failed to decode request: %v", err)
48 return err
49 }
50 if err = stream.Send(&protoReq); err != nil {
51 grpclog.Printf("Failed to send request: %v", err)
52 return err
53 }
54 return nil
55 }
56 if err := handleSend(); err != nil {
57 if cerr := stream.CloseSend(); cerr != nil {
58 grpclog.Printf("Failed to terminate client stream: %v", cerr)
59 }
60 if err == io.EOF {
61 return stream, metadata, nil
62 }
63 return nil, metadata, err
64 }
65 go func() {
66 for {
67 if err := handleSend(); err != nil {
68 break
69 }
70 }
71 if err := stream.CloseSend(); err != nil {
72 grpclog.Printf("Failed to terminate client stream: %v", err)
73 }
74 }()
75 header, err := stream.Header()
76 if err != nil {
77 grpclog.Printf("Failed to get header from client: %v", err)
78 return nil, metadata, err
79 }
80 metadata.HeaderMD = header
81 return stream, metadata, nil
82 }
83
84 func request_EchoService_Stream_0(ctx context.Context, marshaler runtime.Marshaler, client EchoServiceClient, req *http.Request, pathParams map[string]string) (EchoService_StreamClient, runtime.ServerMetadata, error) {
85 var protoReq Empty
86 var metadata runtime.ServerMetadata
87
88 stream, err := client.Stream(ctx, &protoReq)
89 if err != nil {
90 return nil, metadata, err
91 }
92 header, err := stream.Header()
93 if err != nil {
94 return nil, metadata, err
95 }
96 metadata.HeaderMD = header
97 return stream, metadata, nil
98
99 }
100
101 func request_EchoService_Heartbeats_0(ctx context.Context, marshaler runtime.Marshaler, client EchoServiceClient, req *http.Request, pathParams map[string]string) (EchoService_HeartbeatsClient, runtime.ServerMetadata, error) {
102 var metadata runtime.ServerMetadata
103 stream, err := client.Heartbeats(ctx)
104 if err != nil {
105 grpclog.Printf("Failed to start streaming: %v", err)
106 return nil, metadata, err
107 }
108 dec := marshaler.NewDecoder(req.Body)
109 handleSend := func() error {
110 var protoReq Empty
111 err = dec.Decode(&protoReq)
112 if err == io.EOF {
113 return err
114 }
115 if err != nil {
116 grpclog.Printf("Failed to decode request: %v", err)
117 return err
118 }
119 if err = stream.Send(&protoReq); err != nil {
120 grpclog.Printf("Failed to send request: %v", err)
121 return err
122 }
123 return nil
124 }
125 if err := handleSend(); err != nil {
126 if cerr := stream.CloseSend(); cerr != nil {
127 grpclog.Printf("Failed to terminate client stream: %v", cerr)
128 }
129 if err == io.EOF {
130 return stream, metadata, nil
131 }
132 return nil, metadata, err
133 }
134 go func() {
135 for {
136 if err := handleSend(); err != nil {
137 break
138 }
139 }
140 if err := stream.CloseSend(); err != nil {
141 grpclog.Printf("Failed to terminate client stream: %v", err)
142 }
143 }()
144 header, err := stream.Header()
145 if err != nil {
146 grpclog.Printf("Failed to get header from client: %v", err)
147 return nil, metadata, err
148 }
149 metadata.HeaderMD = header
150 return stream, metadata, nil
151 }
152
153
154
155 func RegisterEchoServiceHandlerFromEndpoint(ctx context.Context, mux *runtime.ServeMux, endpoint string, opts []grpc.DialOption) (err error) {
156 conn, err := grpc.Dial(endpoint, opts...)
157 if err != nil {
158 return err
159 }
160 defer func() {
161 if err != nil {
162 if cerr := conn.Close(); cerr != nil {
163 grpclog.Printf("Failed to close conn to %s: %v", endpoint, cerr)
164 }
165 return
166 }
167 go func() {
168 <-ctx.Done()
169 if cerr := conn.Close(); cerr != nil {
170 grpclog.Printf("Failed to close conn to %s: %v", endpoint, cerr)
171 }
172 }()
173 }()
174
175 return RegisterEchoServiceHandler(ctx, mux, conn)
176 }
177
178
179
180 func RegisterEchoServiceHandler(ctx context.Context, mux *runtime.ServeMux, conn *grpc.ClientConn) error {
181 client := NewEchoServiceClient(conn)
182
183 mux.Handle("POST", pattern_EchoService_Echo_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
184 ctx, cancel := context.WithCancel(ctx)
185 defer cancel()
186 if cn, ok := w.(http.CloseNotifier); ok {
187 go func(done <-chan struct{}, closed <-chan bool) {
188 select {
189 case <-done:
190 case <-closed:
191 cancel()
192 }
193 }(ctx.Done(), cn.CloseNotify())
194 }
195 inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
196 rctx, err := runtime.AnnotateContext(ctx, mux, req)
197 if err != nil {
198 runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
199 }
200 resp, md, err := request_EchoService_Echo_0(rctx, inboundMarshaler, client, req, pathParams)
201 ctx = runtime.NewServerMetadataContext(ctx, md)
202 if err != nil {
203 runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
204 return
205 }
206
207 forward_EchoService_Echo_0(ctx, mux, outboundMarshaler, w, req, func() (proto.Message, error) { return resp.Recv() }, mux.GetForwardResponseOptions()...)
208
209 })
210
211 mux.Handle("GET", pattern_EchoService_Stream_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
212 ctx, cancel := context.WithCancel(ctx)
213 defer cancel()
214 if cn, ok := w.(http.CloseNotifier); ok {
215 go func(done <-chan struct{}, closed <-chan bool) {
216 select {
217 case <-done:
218 case <-closed:
219 cancel()
220 }
221 }(ctx.Done(), cn.CloseNotify())
222 }
223 inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
224 rctx, err := runtime.AnnotateContext(ctx, mux, req)
225 if err != nil {
226 runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
227 }
228 resp, md, err := request_EchoService_Stream_0(rctx, inboundMarshaler, client, req, pathParams)
229 ctx = runtime.NewServerMetadataContext(ctx, md)
230 if err != nil {
231 runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
232 return
233 }
234
235 forward_EchoService_Stream_0(ctx, mux, outboundMarshaler, w, req, func() (proto.Message, error) { return resp.Recv() }, mux.GetForwardResponseOptions()...)
236
237 })
238
239 mux.Handle("POST", pattern_EchoService_Heartbeats_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
240 ctx, cancel := context.WithCancel(ctx)
241 defer cancel()
242 if cn, ok := w.(http.CloseNotifier); ok {
243 go func(done <-chan struct{}, closed <-chan bool) {
244 select {
245 case <-done:
246 case <-closed:
247 cancel()
248 }
249 }(ctx.Done(), cn.CloseNotify())
250 }
251 inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
252 rctx, err := runtime.AnnotateContext(ctx, mux, req)
253 if err != nil {
254 runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
255 }
256 resp, md, err := request_EchoService_Heartbeats_0(rctx, inboundMarshaler, client, req, pathParams)
257 ctx = runtime.NewServerMetadataContext(ctx, md)
258 if err != nil {
259 runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
260 return
261 }
262
263 forward_EchoService_Heartbeats_0(ctx, mux, outboundMarshaler, w, req, func() (proto.Message, error) { return resp.Recv() }, mux.GetForwardResponseOptions()...)
264
265 })
266
267 return nil
268 }
269
270 var (
271 pattern_EchoService_Echo_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0}, []string{"echo"}, ""))
272
273 pattern_EchoService_Stream_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0}, []string{"echo"}, ""))
274
275 pattern_EchoService_Heartbeats_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0}, []string{"heartbeats"}, ""))
276 )
277
278 var (
279 forward_EchoService_Echo_0 = runtime.ForwardResponseStream
280
281 forward_EchoService_Stream_0 = runtime.ForwardResponseStream
282
283 forward_EchoService_Heartbeats_0 = runtime.ForwardResponseStream
284 )
285
View as plain text