gitee.com/liuxuezhan/go-micro-v1.18.0@v1.0.0/server/rpc_response.go (about)

     1  package server
     2  
     3  import (
     4  	"net/http"
     5  
     6  	"gitee.com/liuxuezhan/go-micro-v1.18.0/codec"
     7  	"gitee.com/liuxuezhan/go-micro-v1.18.0/transport"
     8  )
     9  
    10  type rpcResponse struct {
    11  	header map[string]string
    12  	socket transport.Socket
    13  	codec  codec.Codec
    14  }
    15  
    16  func (r *rpcResponse) Codec() codec.Writer {
    17  	return r.codec
    18  }
    19  
    20  func (r *rpcResponse) WriteHeader(hdr map[string]string) {
    21  	for k, v := range hdr {
    22  		r.header[k] = v
    23  	}
    24  }
    25  
    26  func (r *rpcResponse) Write(b []byte) error {
    27  	if _, ok := r.header["Content-Type"]; !ok {
    28  		r.header["Content-Type"] = http.DetectContentType(b)
    29  	}
    30  
    31  	return r.socket.Send(&transport.Message{
    32  		Header: r.header,
    33  		Body:   b,
    34  	})
    35  }