gitee.com/liuxuezhan/go-micro-v1.18.0@v1.0.0/client/grpc/response.go (about) 1 package grpc 2 3 import ( 4 "strings" 5 6 "gitee.com/liuxuezhan/go-micro-v1.18.0/codec" 7 "gitee.com/liuxuezhan/go-micro-v1.18.0/codec/bytes" 8 "google.golang.org/grpc" 9 "google.golang.org/grpc/encoding" 10 ) 11 12 type response struct { 13 conn *grpc.ClientConn 14 stream grpc.ClientStream 15 codec encoding.Codec 16 gcodec codec.Codec 17 } 18 19 // Read the response 20 func (r *response) Codec() codec.Reader { 21 return r.gcodec 22 } 23 24 // read the header 25 func (r *response) Header() map[string]string { 26 md, err := r.stream.Header() 27 if err != nil { 28 return map[string]string{} 29 } 30 hdr := make(map[string]string) 31 for k, v := range md { 32 hdr[k] = strings.Join(v, ",") 33 } 34 return hdr 35 } 36 37 // Read the undecoded response 38 func (r *response) Read() ([]byte, error) { 39 f := &bytes.Frame{} 40 if err := r.gcodec.ReadBody(f); err != nil { 41 return nil, err 42 } 43 return f.Data, nil 44 }