...
1
18
19 package grpc
20
21 import (
22 "google.golang.org/grpc/codes"
23 "google.golang.org/grpc/status"
24 )
25
26
27
28
29
30
31
32 type PreparedMsg struct {
33
34 encodedData []byte
35 hdr []byte
36 payload []byte
37 }
38
39
40 func (p *PreparedMsg) Encode(s Stream, msg any) error {
41 ctx := s.Context()
42 rpcInfo, ok := rpcInfoFromContext(ctx)
43 if !ok {
44 return status.Errorf(codes.Internal, "grpc: unable to get rpcInfo")
45 }
46
47
48 if rpcInfo.preloaderInfo == nil {
49 return status.Errorf(codes.Internal, "grpc: rpcInfo.preloaderInfo is nil")
50 }
51 if rpcInfo.preloaderInfo.codec == nil {
52 return status.Errorf(codes.Internal, "grpc: rpcInfo.preloaderInfo.codec is nil")
53 }
54
55
56 data, err := encode(rpcInfo.preloaderInfo.codec, msg)
57 if err != nil {
58 return err
59 }
60 p.encodedData = data
61 compData, err := compress(data, rpcInfo.preloaderInfo.cp, rpcInfo.preloaderInfo.comp)
62 if err != nil {
63 return err
64 }
65 p.hdr, p.payload = msgHeader(data, compData)
66 return nil
67 }
68
View as plain text