private void propagateResponseSideLog(RequestLog lastChild) {
if (lastChild.isAvailable(RESPONSE_START)) {
startResponse0(lastChild.responseStartTimeNanos(), lastChild.responseStartTimeMicros(), true);
}
if (lastChild.isAvailable(RESPONSE_FIRST_BYTES_TRANSFERRED)) {
responseFirstBytesTransferred(lastChild.responseFirstBytesTransferredTimeNanos());
}
if (lastChild.isAvailable(RESPONSE_HEADERS)) {
responseHeaders(lastChild.responseHeaders());
}
if (lastChild.isAvailable(RESPONSE_CONTENT)) {
responseContent(lastChild.responseContent(), lastChild.rawResponseContent());
}
if (lastChild.isAvailable(RESPONSE_END)) {
endResponse0(lastChild.responseCause(), lastChild.responseEndTimeNanos());
}
lastChild.addListener(log -> startResponse0(
log.responseStartTimeNanos(), log.responseStartTimeMicros(), true), RESPONSE_START);
lastChild.addListener(log -> responseFirstBytesTransferred(
log.responseFirstBytesTransferredTimeNanos()), RESPONSE_FIRST_BYTES_TRANSFERRED);
lastChild.addListener(log -> responseHeaders(log.responseHeaders()), RESPONSE_HEADERS);
lastChild.addListener(log -> responseContent(
log.responseContent(), log.rawResponseContent()), RESPONSE_CONTENT);
lastChild.addListener(log -> endResponse0(
log.responseCause(), log.responseEndTimeNanos()), RESPONSE_END);
}