/** * Helper method for handling concurrent throttling * * @param concurrentAccessController ConcurrentAccessController * @param messageContext MessageContext - message level states * @return true if access is allowed through concurrent throttling ,o.w false */ private boolean doConcurrentThrottling( ConcurrentAccessController concurrentAccessController, MessageContext messageContext) { boolean canAccess = true; int available; if (concurrentAccessController != null) { if (messageContext.getFLOW() == MessageContext.IN_FLOW) { available = concurrentAccessController.getAndDecrement(); canAccess = available > 0; if (debugOn) { log.debug( "Concurrency Throttle : Access " + (canAccess ? "allowed" : "denied") + " :: " + available + " of available of " + concurrentAccessController.getLimit() + " connections"); } if (debugOn) { if (!canAccess) { log.debug( "Concurrency Throttle : Access has currently been denied since allowed" + " maximum concurrent access have exceeded"); } } } else if (messageContext.getFLOW() == MessageContext.OUT_FLOW) { available = concurrentAccessController.incrementAndGet(); if (debugOn) { log.debug( "Concurrency Throttle : Connection returned" + " :: " + available + " of available of " + concurrentAccessController.getLimit() + " connections"); } } } return canAccess; }