@Override public SessionProtocol sessionProtocol() { ensureAvailability(REQUEST_START); return sessionProtocol; }
@Override public Object requestContent() { ensureAvailability(REQUEST_CONTENT); return requestContent; }
@Override public long totalDurationNanos() { ensureAvailability(COMPLETE); return responseEndTimeNanos - requestStartTimeNanos; }
@Override public long requestEndTimeNanos() { ensureAvailability(REQUEST_END); return requestEndTimeNanos; }
@Override public long requestDurationNanos() { ensureAvailability(REQUEST_END); return requestEndTimeNanos - requestStartTimeNanos; }
@Override public long requestLength() { ensureAvailability(REQUEST_END); return requestLength; }
@Override public Object rawResponseContent() { ensureAvailability(RESPONSE_CONTENT); return rawResponseContent; }
@Override public Channel channel() { ensureAvailability(REQUEST_START); return channel; }
@Override public SerializationFormat serializationFormat() { ensureAvailability(SCHEME); return serializationFormat; }
@Override public long responseStartTimeMicros() { ensureAvailability(RESPONSE_START); return responseStartTimeMicros; }
@Override public long responseEndTimeNanos() { ensureAvailability(RESPONSE_END); return responseEndTimeNanos; }
@Override public SSLSession sslSession() { ensureAvailability(REQUEST_START); return sslSession; }
@Override public long responseFirstBytesTransferredTimeNanos() { ensureAvailability(RESPONSE_FIRST_BYTES_TRANSFERRED); return responseFirstBytesTransferredTimeNanos; }
@Override public HttpHeaders responseHeaders() { ensureAvailability(RESPONSE_HEADERS); return responseHeaders; }
@Override public Object responseContent() { ensureAvailability(RESPONSE_CONTENT); return responseContent; }
@Override public HttpHeaders requestHeaders() { ensureAvailability(REQUEST_HEADERS); return requestHeaders; }
@Override public Object rawRequestContent() { ensureAvailability(REQUEST_CONTENT); return rawRequestContent; }
@Override public long responseStartTimeNanos() { ensureAvailability(RESPONSE_START); return responseStartTimeNanos; }
@Override public long responseDurationNanos() { ensureAvailability(RESPONSE_END); return responseEndTimeNanos - responseStartTimeNanos; }
@Override public Scheme scheme() { ensureAvailability(SCHEME); return Scheme.of(serializationFormat, sessionProtocol); }