package com.bazaarvoice.ostrich;
/**
* A provider of statistics relating to the state of the {@link ServicePool}. Mainly useful for making decisions for
* load balancing, a {@code ServicePool} will pass an instance to the {@link ServiceFactory} when requesting a
* {@link LoadBalanceAlgorithm}.
*/
public interface ServicePoolStatistics {
/**
* The number of cached service instances not currently in use for a single end point.
* @param endPoint The end point to get cache data for.
* @return The number of idle service instances in the cache for the given end point.
*/
int getNumIdleCachedInstances(ServiceEndPoint endPoint);
/**
* The number of service instances in the pool currently being used to execute callbacks for a single end point.
* Note that this only represents that activity between a single service pool and the end point, and does not in any
* way represent activity of other service pools for the same service, other applications connected to the service,
* or global overall load for the service.
* @param endPoint The end point to get activity data for.
* @return The number of service instances actively serving callbacks for the given end point.
*/
int getNumActiveInstances(ServiceEndPoint endPoint);
}