@Override public void checkQuota(long writeSize, long readSize) throws ThrottlingException { if (!reqsLimiter.canExecute()) { ThrottlingException.throwNumRequestsExceeded(reqsLimiter.waitInterval()); } if (!reqSizeLimiter.canExecute(writeSize + readSize)) { ThrottlingException.throwRequestSizeExceeded(reqSizeLimiter .waitInterval(writeSize + readSize)); } if (writeSize > 0) { if (!writeReqsLimiter.canExecute()) { ThrottlingException.throwNumWriteRequestsExceeded(writeReqsLimiter.waitInterval()); } if (!writeSizeLimiter.canExecute(writeSize)) { ThrottlingException.throwWriteSizeExceeded(writeSizeLimiter.waitInterval(writeSize)); } } if (readSize > 0) { if (!readReqsLimiter.canExecute()) { ThrottlingException.throwNumReadRequestsExceeded(readReqsLimiter.waitInterval()); } if (!readSizeLimiter.canExecute(readSize)) { ThrottlingException.throwReadSizeExceeded(readSizeLimiter.waitInterval(readSize)); } } }