package org.radargun.service;
import java.util.Collections;
import java.util.Map;
import java.util.Set;
import org.infinispan.AdvancedCache;
import org.infinispan.context.Flag;
import org.radargun.traits.CacheInformation;
/**
* @author Radim Vansa <rvansa@redhat.com>
*/
public class InfinispanCacheInfo implements CacheInformation {
protected final InfinispanEmbeddedService service;
public InfinispanCacheInfo(InfinispanEmbeddedService service) {
this.service = service;
}
@Override
public CacheInformation.Cache getCache(String cacheName) {
return new Cache(service.getCache(cacheName).getAdvancedCache());
}
@Override
public String getDefaultCacheName() {
return service.cacheName;
}
@Override
public Set<String> getCacheNames() {
return service.cacheManager.getCacheNames();
}
protected class Cache implements CacheInformation.Cache {
protected AdvancedCache cache;
public Cache(AdvancedCache cache) {
this.cache = cache;
}
@Override
public long getOwnedSize() {
return -1;
}
@Override
public long getLocallyStoredSize() {
return cache.withFlags(Flag.CACHE_MODE_LOCAL).size();
}
@Override
public long getMemoryStoredSize() {
return cache.withFlags(Flag.SKIP_CACHE_LOAD, Flag.CACHE_MODE_LOCAL).size();
}
@Override
public long getTotalSize() {
return -1;
}
@Override
public Map<?, Long> getStructuredSize() {
return Collections.singletonMap(cache.getName(), getOwnedSize());
}
@Override
public int getNumReplicas() {
return service.getNumOwners(cache);
}
@Override
public int getEntryOverhead() {
return -1;
}
}
}