in internal/http/req-response.go [72:131]
func (r *ReqResponse) FetchChanges(id uint32, builder *flatbuffers.Builder) bool {
if !r.HasChange() {
return false
}
hdrLen := len(r.hdr)
var hdrVec flatbuffers.UOffsetT
if hdrLen > 0 {
hdrs := []flatbuffers.UOffsetT{}
for n, arr := range r.hdr {
for _, v := range arr {
name := builder.CreateString(n)
value := builder.CreateString(v)
A6.TextEntryStart(builder)
A6.TextEntryAddName(builder, name)
A6.TextEntryAddValue(builder, value)
te := A6.TextEntryEnd(builder)
hdrs = append(hdrs, te)
}
}
size := len(hdrs)
hrc.StopStartHeadersVector(builder, size)
for i := size - 1; i >= 0; i-- {
te := hdrs[i]
builder.PrependUOffsetT(te)
}
hdrVec = builder.EndVector(size)
}
var bodyVec flatbuffers.UOffsetT
if r.body != nil {
b := r.body.Bytes()
if len(b) > 0 {
bodyVec = builder.CreateByteVector(b)
}
}
hrc.StopStart(builder)
if r.code == 0 {
hrc.StopAddStatus(builder, 200)
} else {
hrc.StopAddStatus(builder, uint16(r.code))
}
if hdrLen > 0 {
hrc.StopAddHeaders(builder, hdrVec)
}
if r.body != nil {
hrc.StopAddBody(builder, bodyVec)
}
stop := hrc.StopEnd(builder)
hrc.RespStart(builder)
hrc.RespAddId(builder, id)
hrc.RespAddActionType(builder, hrc.ActionStop)
hrc.RespAddAction(builder, stop)
res := hrc.RespEnd(builder)
builder.Finish(res)
return true
}