protected TFuture sendRequest()

in tchannel-core/src/main/java/com/uber/tchannel/api/SubChannel.java [245:266]


    protected <V extends Response> TFuture<V> sendRequest(
        Request request,
        InetAddress host,
        int port
    ) {
        OutRequest<V> outRequest = new OutRequest<>(this, request, topChannel.getTracingContext());
        if (host != null) {
            Connection conn = peerManager.findOrNew(new InetSocketAddress(host, port));
            // No retry for direct connections
            outRequest.disableRetry();
            if (!sendOutRequest(outRequest, conn)) {
                outRequest.setFuture();
            }
        } else if (peers.isEmpty()) {
            outRequest.setLastError(ErrorType.BadRequest, new TChannelNoPeerAvailable());
            outRequest.setFuture();
        } else {
            sendOutRequest(outRequest);
        }

        return outRequest.getFuture();
    }