class RateLimitingProcessor implements Processor {

    protected List<SubnetUtils.SubnetInfo> getIpSet(String ipSetId, int retryCount) {
        List<SubnetUtils.SubnetInfo> ips = new LinkedList<>();

        GetIPSetResult result = null;
        try {
            result = awsWaf.getIPSet(new GetIPSetRequest().withIPSetId(ipSetId));
        } catch (AWSWAFException e) {
            if (retryCount < 10) {
                sleep(1, TimeUnit.SECONDS);
                return getIpSet(ipSetId, retryCount + 1);
            }
            throw e;
        }
        result.getIPSet().getIPSetDescriptors().forEach(ipSetDescriptor -> {
            if (IPSetDescriptorType.IPV4.toString().equals(ipSetDescriptor.getType())) {
                SubnetUtils subnetUtils = new SubnetUtils(ipSetDescriptor.getValue());
                subnetUtils.setInclusiveHostCount(true);
                ips.add(subnetUtils.getInfo());
            }
        });

        return ips;
    }

    public  RateLimitingProcessor(ObjectMapper objectMapper, AWSWAFRegional awsWaf, AmazonS3 amazonS3);

}