@Override public void responseLength(long responseLength) { if (responseLength < 0) { throw new IllegalArgumentException("responseLength: " + responseLength + " (expected: >= 0)"); } if (isAvailable(RESPONSE_END)) { return; } this.responseLength = responseLength; }
@Override public void increaseResponseLength(long deltaBytes) { if (deltaBytes < 0) { throw new IllegalArgumentException("deltaBytes: " + deltaBytes + " (expected: >= 0)"); } if (isAvailable(RESPONSE_END)) { return; } responseLength += deltaBytes; }
@Override public void requestLength(long requestLength) { if (requestLength < 0) { throw new IllegalArgumentException("requestLength: " + requestLength + " (expected: >= 0)"); } if (isAvailable(REQUEST_END)) { return; } this.requestLength = requestLength; }
@Override public void increaseRequestLength(long deltaBytes) { if (deltaBytes < 0) { throw new IllegalArgumentException("deltaBytes: " + deltaBytes + " (expected: >= 0)"); } if (isAvailable(REQUEST_END)) { return; } requestLength += deltaBytes; }
@Nullable @Override public SSLSession sslSession() { if (log.isAvailable(RequestLogAvailability.REQUEST_START)) { return log.sslSession(); } else { return null; } }
@Override @Nullable protected Channel channel() { if (log.isAvailable(RequestLogAvailability.REQUEST_START)) { return log.channel(); } else { return null; } }
@Override public boolean isAvailable(RequestLogAvailability availability) { return isAvailable(availability.getterFlags()); }
@Override public boolean isAvailable(RequestLogAvailability... availabilities) { return isAvailable(getterFlags(availabilities)); }
@Override public boolean isAvailable(Iterable<RequestLogAvailability> availabilities) { return isAvailable(getterFlags(availabilities)); }
private boolean isAvailabilityAlreadyUpdated(RequestLogAvailability availability) { return isAvailable(availability.setterFlags()); }
if (isAvailable(flags, RESPONSE_START)) { buf.append("startTime="); TextFormatter.appendEpoch(buf, responseStartTimeMillis()); if (isAvailable(flags, RESPONSE_END)) { buf.append(", length="); TextFormatter.appendSize(buf, responseLength); buf.append(", duration="); TextFormatter.appendElapsed(buf, responseDurationNanos()); if (isAvailable(flags, REQUEST_START)) { buf.append(", totalDuration="); TextFormatter.appendElapsed(buf, totalDurationNanos()); if (isAvailable(flags, RESPONSE_HEADERS)) { buf.append(", headers=").append(headersSanitizer.apply(responseHeaders)); if (isAvailable(flags, RESPONSE_CONTENT) && responseContent != null) { buf.append(", content=").append(contentSanitizer.apply(responseContent));
if (isAvailable(flags, REQUEST_START)) { buf.append("startTime="); TextFormatter.appendEpoch(buf, requestStartTimeMillis()); if (isAvailable(flags, REQUEST_END)) { buf.append(", length="); TextFormatter.appendSize(buf, requestLength); if (isAvailable(flags, SCHEME)) { buf.append(scheme().uriText()); } else { if (isAvailable(flags, REQUEST_HEADERS)) { buf.append(", headers=").append(headersSanitizer.apply(requestHeaders)); if (isAvailable(flags, REQUEST_CONTENT) && requestContent != null) { buf.append(", content=").append(contentSanitizer.apply(requestContent));
private void endResponse0(@Nullable Throwable responseCause, long responseEndTimeNanos) { final int flags = responseCause == null && responseContentDeferred ? FLAGS_RESPONSE_END_WITHOUT_CONTENT : RESPONSE_END.setterFlags(); if (isAvailable(flags)) { return; } // if the response is not started yet, call startResponse() with responseEndTimeNanos so that // totalResponseDuration will be 0 startResponse0(responseEndTimeNanos, currentTimeMicros(), false); this.responseEndTimeNanos = responseEndTimeNanos; if (this.responseCause == null) { this.responseCause = responseCause; } updateAvailability(flags); }
private void addListener(RequestLogListener listener, int interestedFlags) { if (interestedFlags == 0) { throw new IllegalArgumentException("no availability specified"); } if (isAvailable(interestedFlags)) { // No need to add to 'listeners'. RequestLogListenerInvoker.invokeOnRequestLog(listener, this); return; } final ListenerEntry e = new ListenerEntry(listener, interestedFlags); final RequestLogListener[] satisfiedListeners; synchronized (listeners) { listeners.add(e); satisfiedListeners = removeSatisfiedListeners(); } notifyListeners(satisfiedListeners); }
private void endRequest0(@Nullable Throwable requestCause, long requestEndTimeNanos) { final int flags = requestCause == null && requestContentDeferred ? FLAGS_REQUEST_END_WITHOUT_CONTENT : REQUEST_END.setterFlags(); if (isAvailable(flags)) { return; } // if the request is not started yet, call startRequest() with requestEndTimeNanos so that // totalRequestDuration will be 0 startRequest0(null, context().sessionProtocol(), null, requestEndTimeNanos, currentTimeMicros(), false); this.requestEndTimeNanos = requestEndTimeNanos; this.requestCause = requestCause; updateAvailability(flags); }