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  }