Repository: incubator-htrace Updated Branches: refs/heads/master 08d54c9e0 -> 33ab96fbe
http://git-wip-us.apache.org/repos/asf/incubator-htrace/blob/33ab96fb/htrace-htraced/src/go/src/org/apache/htrace/htraced/hrpc.go ---------------------------------------------------------------------- diff --git a/htrace-htraced/src/go/src/org/apache/htrace/htraced/hrpc.go b/htrace-htraced/src/go/src/org/apache/htrace/htraced/hrpc.go index 54ca780..a53380e 100644 --- a/htrace-htraced/src/go/src/org/apache/htrace/htraced/hrpc.go +++ b/htrace-htraced/src/go/src/org/apache/htrace/htraced/hrpc.go @@ -21,10 +21,12 @@ package main import ( "bufio" + "bytes" "encoding/binary" "encoding/json" "errors" "fmt" + "github.com/ugorji/go/codec" "io" "net" "net/rpc" @@ -111,7 +113,9 @@ func (cdc *HrpcServerCodec) ReadRequestBody(body interface{}) error { cdc.lg.Tracef("Reading HRPC %d-byte request body from %s\n", cdc.length, cdc.conn.RemoteAddr()) } - dec := json.NewDecoder(io.LimitReader(cdc.conn, int64(cdc.length))) + mh := new(codec.MsgpackHandle) + mh.WriteExt = true + dec := codec.NewDecoder(io.LimitReader(cdc.conn, int64(cdc.length)), mh) err := dec.Decode(body) if err != nil { return createErrAndWarn(cdc.lg, fmt.Sprintf("Failed to read request "+ @@ -130,11 +134,16 @@ func (cdc *HrpcServerCodec) WriteResponse(resp *rpc.Response, msg interface{}) e var err error buf := EMPTY if msg != nil { - buf, err = json.Marshal(msg) + mh := new(codec.MsgpackHandle) + mh.WriteExt = true + w := bytes.NewBuffer(make([]byte, 0, 128)) + enc := codec.NewEncoder(w, mh) + err := enc.Encode(msg) if err != nil { return createErrAndWarn(cdc.lg, fmt.Sprintf("Failed to marshal "+ "response message: %s", err.Error())) } + buf = w.Bytes() } hdr := common.HrpcResponseHeader{} hdr.MethodId = common.HrpcMethodNameToId(resp.ServiceMethod)
