class NetworkClient implements KafkaClient {

    @Override
    public void close(String nodeId) {
        selector.close(nodeId);
        for (ClientRequest request : inFlightRequests.clearAll(nodeId))
            metadataUpdater.maybeHandleDisconnection(request);
        connectionStates.remove(nodeId);
    }

    public  NetworkClient(Selectable selector,
        Metadata metadata,
        String clientId,
        int maxInFlightRequestsPerConnection,
        long reconnectBackoffMs,
        int socketSendBuffer,
        int socketReceiveBuffer,
        int requestTimeoutMs,
        Time time);
    public  NetworkClient(Selectable selector,
        MetadataUpdater metadataUpdater,
        String clientId,
        int maxInFlightRequestsPerConnection,
        long reconnectBackoffMs,
        int socketSendBuffer,
        int socketReceiveBuffer,
        int requestTimeoutMs,
        Time time);
    private  NetworkClient(MetadataUpdater metadataUpdater,
        Metadata metadata,
        Selectable selector,
        String clientId,
        int maxInFlightRequestsPerConnection,
        long reconnectBackoffMs,
        int socketSendBuffer,
        int socketReceiveBuffer,
        int requestTimeoutMs,
        Time time);

}