func()

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
}