protected <V extends Response> TFuture<V> sendRequest( Request request, InetAddress host, int port) { OutRequest<V> outRequest = new OutRequest<V>(this, request); 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.size() == 0) { outRequest.setLastError(ErrorType.BadRequest, new TChannelNoPeerAvailable()); outRequest.setFuture(); } else { sendOutRequest(outRequest); } return outRequest.getFuture(); }