public synchronized long incr(String key, int by) { Element e = ehCache.get(key); if (e == null) { return -1; } long newValue = ((Number) e.getObjectValue()).longValue() + by; Element newE = new Element(key, newValue); newE.setTimeToLive(e.getTimeToLive()); ehCache.put(newE); return newValue; }
public synchronized long decr(String key, int by) { Element e = ehCache.get(key); if (e == null) { return -1; } long newValue = ((Number) e.getObjectValue()).longValue() - by; Element newE = new Element(key, newValue); newE.setTimeToLive(e.getTimeToLive()); ehCache.put(newE); return newValue; }
public NonEternalElementData(final Element element) { super(element); timeToIdle = element.getTimeToIdle(); timeToLive = element.getTimeToLive(); }
/** * Returns the expiration time based on time to live. If this element also has a time to idle setting, the expiry * time will vary depending on whether the element is accessed. * * @return the time to expiration */ public long getExpirationTime() { if (!isLifespanSet() || isEternal()) { return Long.MAX_VALUE; } long expirationTime = 0; long ttlExpiry = creationTime + TimeUtil.toMillis(getTimeToLive()); long mostRecentTime = Math.max(creationTime, lastAccessTime); long ttiExpiry = mostRecentTime + TimeUtil.toMillis(getTimeToIdle()); if (getTimeToLive() != 0 && (getTimeToIdle() == 0 || lastAccessTime == 0)) { expirationTime = ttlExpiry; } else if (getTimeToLive() == 0) { expirationTime = ttiExpiry; } else { expirationTime = Math.min(ttlExpiry, ttiExpiry); } return expirationTime; }
/** * Create a new write operation for a particular element and creation time * * @param element the element to write * @param creationTime the creation time of the operation */ public WriteOperation(Element element, long creationTime) { this.element = new Element(element.getObjectKey(), element.getObjectValue(), element.getVersion(), element.getCreationTime(), element.getLastAccessTime(), element.getHitCount(), false, element.getTimeToLive(), element.getTimeToIdle(), element.getLastUpdateTime()); this.creationTime = creationTime; }
private CacheEntry duplicateCacheEntryElement(CacheEntry entry) { if (null == entry.getElement()) { return entry; } else { Element element = entry.getElement(); return new CacheEntry(entry.getKey(), new Element(element.getObjectKey(), element.getObjectValue(), element.getVersion(), element.getCreationTime(), element.getLastAccessTime(), element.getHitCount(), false, element.getTimeToLive(), element.getTimeToIdle(), element.getLastUpdateTime())); } }
private boolean doPutWithCustomLifespan(String portableKey, Element element) { ElementData value = valueModeHandler.createElementData(element); int creationTimeInSecs = (int) (element.getCreationTime() / 1000); int customTTI = element.isEternal() ? Integer.MAX_VALUE : element.getTimeToIdle(); int customTTL = element.isEternal() ? Integer.MAX_VALUE : element.getTimeToLive(); if (checkContainsKeyOnPut) { return backend.put(portableKey, value, creationTimeInSecs, customTTI, customTTL) == null; } else { backend.putNoReturn(portableKey, value, creationTimeInSecs, customTTI, customTTL); return true; } }
/** * Make a duplicate of an element but using the specified value * * @param element the element to duplicate * @param newValue the new element's value * @return the duplicated element */ public Element duplicateElementWithNewValue(final Element element, final Object newValue) { Element newElement; if (element.usesCacheDefaultLifespan()) { newElement = new Element(element.getObjectKey(), newValue, element.getVersion(), element.getCreationTime(), element.getLastAccessTime(), element.getHitCount(), element.usesCacheDefaultLifespan(), Integer.MIN_VALUE, Integer.MIN_VALUE, element.getLastUpdateTime()); } else { newElement = new Element(element.getObjectKey(), newValue, element.getVersion(), element.getCreationTime(), element.getLastAccessTime(), element.getHitCount(), element.usesCacheDefaultLifespan(), element.getTimeToLive(), element.getTimeToIdle(), element.getLastUpdateTime()); } if (ElementIdHelper.hasId(element)) { ElementIdHelper.setId(newElement, ElementIdHelper.getId(element)); } return newElement; }
@Override public Integer getTtl(String cacheName, Object key) { Element element = getOrAddCache(cacheName).get(key); return element != null ? element.getTimeToLive() : null; }
public NonEternalElementData(final Element element) { super(element); timeToIdle = element.getTimeToIdle(); timeToLive = element.getTimeToLive(); }
@Override public synchronized long incr(String key, int by) { Element e = cache.get(key); if (e == null) { return -1; } long newValue = ((Number) e.getValue()).longValue() + by; Element newE = new Element(key, newValue); newE.setTimeToLive(e.getTimeToLive()); cache.put(newE); return newValue; }
@Override public synchronized long decr(String key, int by) { Element e = cache.get(key); if (e == null) { return -1; } long newValue = ((Number) e.getValue()).longValue() - by; Element newE = new Element(key, newValue); newE.setTimeToLive(e.getTimeToLive()); cache.put(newE); return newValue; }
/** * Create a new write operation for a particular element and creation time * * @param element the element to write * @param creationTime the creation time of the operation */ public WriteOperation(Element element, long creationTime) { this.element = new Element(element.getObjectKey(), element.getObjectValue(), element.getVersion(), element.getCreationTime(), element.getLastAccessTime(), element.getHitCount(), false, element.getTimeToLive(), element.getTimeToIdle(), element.getLastUpdateTime()); this.creationTime = creationTime; }
/** * Create a new write operation for a particular element and creation time * * @param element the element to write * @param creationTime the creation time of the operation */ public WriteOperation(Element element, long creationTime) { this.element = new Element(element.getObjectKey(), element.getObjectValue(), element.getVersion(), element.getCreationTime(), element.getLastAccessTime(), element.getHitCount(), false, element.getTimeToLive(), element.getTimeToIdle(), element.getLastUpdateTime()); this.creationTime = creationTime; }
public IdentityModeElementData(final Element element, long creationTime) { super(element.getObjectValue(), element.getCreationTime(), creationTime == Integer.MIN_VALUE ? element.getCreationTime() : creationTime, element.getLastAccessTime(), element.getHitCount(), element.getTimeToLive(), element.getTimeToIdle(), element.getLastUpdateTime()); }
public SerializationModeElementData(final Element element) { this(element.getObjectValue(), element.getCreationTime(), element.getCreationTime(), element.getLastAccessTime(), element.getHitCount(), element.usesCacheDefaultLifespan(), element.getTimeToLive(), element.getTimeToIdle(), element.getLastUpdateTime()); }
private CacheEntry duplicateCacheEntryElement(CacheEntry entry) { if (null == entry.getElement()) { return entry; } else { Element element = entry.getElement(); return new CacheEntry(entry.getKey(), new Element(element.getObjectKey(), element.getObjectValue(), element.getVersion(), element.getCreationTime(), element.getLastAccessTime(), element.getHitCount(), false, element.getTimeToLive(), element.getTimeToIdle(), element.getLastUpdateTime())); } }
private CacheEntry duplicateCacheEntryElement(CacheEntry entry) { if (null == entry.getElement()) { return entry; } else { Element element = entry.getElement(); return new CacheEntry(entry.getKey(), new Element(element.getObjectKey(), element.getObjectValue(), element.getVersion(), element.getCreationTime(), element.getLastAccessTime(), element.getHitCount(), false, element.getTimeToLive(), element.getTimeToIdle(), element.getLastUpdateTime())); } }
private CacheEntry duplicateCacheEntryElement(CacheEntry entry) { if (null == entry.getElement()) { return entry; } else { Element element = entry.getElement(); return new CacheEntry(entry.getKey(), new Element(element.getObjectKey(), element.getObjectValue(), element.getVersion(), element.getCreationTime(), element.getLastAccessTime(), element.getHitCount(), false, element.getTimeToLive(), element.getTimeToIdle(), element.getLastUpdateTime())); } }
/** * Make a duplicate of an element but using the specified value * * @param element the element to duplicate * @param newValue the new element's value * @return the duplicated element */ public Element duplicateElementWithNewValue(final Element element, final Object newValue) { return new Element(element.getObjectKey(), newValue, element.getVersion(), element.getCreationTime(), element.getLastAccessTime(), element.getHitCount(), element.usesCacheDefaultLifespan(), element.getTimeToLive(), element.getTimeToIdle(), element.getLastUpdateTime()); }