private Response callDownstream()

in tchannel-crossdock/src/main/java/com/uber/tchannel/crossdock/behavior/trace/TraceBehavior.java [56:82]


    private Response callDownstream(Downstream downstream) {
        if (downstream == null) {
            return null;
        }
        logger.info("Calling downstream {}", downstream);
        InetAddress host = host(downstream);
        int port = port(downstream);
        Response response;
        try {
            if (downstream.getEncoding().equals(ArgScheme.JSON.getScheme())) {
                response = jsonHandler.callDownstream(downstream, host, port);
            } else if (downstream.getEncoding().equals(ArgScheme.THRIFT.getScheme())) {
                response = thriftHandler.callDownstream(downstream, host, port);
            } else {
                throw new IllegalArgumentException("Unsupported encoding " + downstream.getEncoding());
            }
        } catch (Exception e) {
            logger.error("Failed to call downstream", e);
            return new Response(new ObservedSpan(e.toString(), false, e.toString()), null);
        }
        if (response == null) {
            response = new Response(
                    new ObservedSpan("Downstream call failed for " + downstream, false, ""),
                    null);
        }
        return response;
    }