panic on codec error is better as it's a coding error
Bas van Beek
7 years ago
1 | 1 | |
2 | 2 | import ( |
3 | 3 | "context" |
4 | "errors" | |
5 | 4 | |
6 | 5 | pb "github.com/go-kit/kit/transport/grpc/_pb" |
7 | 6 | ) |
8 | 7 | |
9 | 8 | func encodeRequest(ctx context.Context, req interface{}) (interface{}, error) { |
10 | r, ok := req.(TestRequest) | |
11 | if !ok { | |
12 | return nil, errors.New("request encode error") | |
13 | } | |
9 | r := req.(TestRequest) | |
14 | 10 | return &pb.TestRequest{A: r.A, B: r.B}, nil |
15 | 11 | } |
16 | 12 | |
17 | 13 | func decodeRequest(ctx context.Context, req interface{}) (interface{}, error) { |
18 | r, ok := req.(*pb.TestRequest) | |
19 | if !ok { | |
20 | return nil, errors.New("request decode error") | |
21 | } | |
14 | r := req.(*pb.TestRequest) | |
22 | 15 | return TestRequest{A: r.A, B: r.B}, nil |
23 | 16 | } |
24 | 17 | |
25 | 18 | func encodeResponse(ctx context.Context, resp interface{}) (interface{}, error) { |
26 | r, ok := resp.(*TestResponse) | |
27 | if !ok { | |
28 | return nil, errors.New("response encode error") | |
29 | } | |
19 | r := resp.(*TestResponse) | |
30 | 20 | return &pb.TestResponse{V: r.V}, nil |
31 | 21 | } |
32 | 22 | |
33 | 23 | func decodeResponse(ctx context.Context, resp interface{}) (interface{}, error) { |
34 | r, ok := resp.(*pb.TestResponse) | |
35 | if !ok { | |
36 | return nil, errors.New("response decode error") | |
37 | } | |
24 | r := resp.(*pb.TestResponse) | |
38 | 25 | return &TestResponse{V: r.V, Ctx: ctx}, nil |
39 | 26 | } |