protected void setTimer()

in tchannel-core/src/main/java/com/uber/tchannel/handlers/ResponseRouter.java [160:183]


    protected void setTimer(final @NotNull OutRequest<?> outRequest) {
        final long start = System.currentTimeMillis();
        Timeout timeout = timer.newTimeout(new TimerTask() {
            @Override
            public void run(Timeout timeout) throws Exception {
                // prevent ByteBuf refCnt leak
                outRequest.flushWrite();
                if (timeouts.incrementAndGet() >= resetOnTimeoutLimit) {
                    // reset on continuous timeouts
                    peerManager.handleConnectionErrors(ctx.channel(),
                        new TChannelConnectionReset(String.format(
                            "Connection reset due to continuous %d timeouts", resetOnTimeoutLimit)));
                    return;
                }

                handleResponse(new ErrorResponse(
                    outRequest.getRequest().getId(),
                    ErrorType.Timeout,
                    String.format("Request timeout after %dms", System.currentTimeMillis() - start)));
            }
        }, outRequest.getRequest().getTimeout(), TimeUnit.MILLISECONDS);

        outRequest.setTimeout(timeout);
    }