in proxy/protocol/dubbo/dubbo/codec.go [226:262]
func (p *DubboCodec) EncodeDubboReq(req *Request, buffer *util.WriteBuffer) int {
// set Magic number.
header := make([]byte, HeaderLength)
util.Short2bytes(Magic, header, 0)
// set request and serialization flag.
header[2] = (byte)(FlagRequest | p.GetContentTypeID())
if req.IsHeartbeat() {
header[2] |= FlagEvent
}
if req.IsEvent() {
header[2] |= FlagEvent
}
if req.IsTwoWay() {
header[2] |= FlagTwoWay
}
status := req.GetStatus()
header[3] = status
// set request id.
util.Long2bytes(req.GetMsgID(), header, 4)
if buffer.WriteIndex(HeaderLength) != nil {
return -1
}
if v, ok := req.GetData().([]byte); ok {
buffer.WriteBytes(v)
}
buffer.WriteObject(req.GetAttachments())
len := buffer.WrittenBytes() - HeaderLength
util.Int2bytes(len, header, 12)
buffer.WriteIndex(0)
buffer.WriteBytes(header)
buffer.WriteIndex(HeaderLength + len)
return 0
}