in runner-plugin-sdk/src/main/java/org/apache/apisix/plugin/runner/PostResponse.java [55:98]
public ByteBuffer encode() {
FlatBufferBuilder builder = new FlatBufferBuilder();
int bodyIndex = -1;
if (StringUtils.hasText(body)) {
byte[] bodyBytes = body.getBytes(this.charset);
bodyIndex = Resp.createBodyVector(builder, bodyBytes);
}
int headerIndex = -1;
if (!CollectionUtils.isEmpty(headers)) {
int[] headerTexts = new int[headers.size()];
int i = -1;
for (Map.Entry<String, String> header : headers.entrySet()) {
int key = builder.createString(header.getKey());
int value = 0;
if (!Objects.isNull(header.getValue())) {
value = builder.createString(header.getValue());
}
int text = TextEntry.createTextEntry(builder, key, value);
headerTexts[++i] = text;
}
headerIndex = Resp.createHeadersVector(builder, headerTexts);
}
Resp.startResp(builder);
Resp.addId(builder, this.requestId);
if (-1 != bodyIndex) {
Resp.addBody(builder, bodyIndex);
}
if (-1 != headerIndex) {
Resp.addHeaders(builder, headerIndex);
}
if (!Objects.isNull(statusCode)) {
Resp.addStatus(builder, this.statusCode);
}
builder.finish(Resp.endResp(builder));
return builder.dataBuffer();
}