Search in sources :

Example 1 with ReliableResourceComparator

use of ddf.catalog.resource.data.ReliableResourceComparator in project ddf by codice.

the class ProductCacheDirListener method entryAdded.

@Override
public synchronized void entryAdded(EntryEvent<K, V> event) {
    V value = event.getValue();
    if (value.getClass().isAssignableFrom(ReliableResource.class)) {
        ReliableResource resource = (ReliableResource) value;
        LOGGER.debug("entry added event triggered: {}", resource.getKey());
        long currentCacheDirSize = cacheDirSize.addAndGet(resource.getSize());
        if (maxDirSizeBytes > 0 && maxDirSizeBytes < currentCacheDirSize) {
            PagingPredicate pp = new PagingPredicate(new ReliableResourceComparator(), DEFAULT_PAGE_SIZE);
            Collection<ReliableResource> lruResourceEntries = map.values(pp);
            Iterator<ReliableResource> itr = lruResourceEntries.iterator();
            while (maxDirSizeBytes < currentCacheDirSize) {
                if (itr.hasNext()) {
                    ReliableResource rr = itr.next();
                    deleteFromCache(map, rr);
                    currentCacheDirSize -= rr.getSize();
                } else {
                    pp.nextPage();
                    lruResourceEntries = map.values(pp);
                    itr = lruResourceEntries.iterator();
                }
            }
        }
    }
}
Also used : PagingPredicate(com.hazelcast.query.PagingPredicate) ReliableResourceComparator(ddf.catalog.resource.data.ReliableResourceComparator) ReliableResource(ddf.catalog.resource.data.ReliableResource)

Aggregations

PagingPredicate (com.hazelcast.query.PagingPredicate)1 ReliableResource (ddf.catalog.resource.data.ReliableResource)1 ReliableResourceComparator (ddf.catalog.resource.data.ReliableResourceComparator)1