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; }
boolean needsUpdate(Object key, Element e) { Long expireTime = findTimestampUnlocked(key); final long now = System.currentTimeMillis(); final long diff = expireTime.longValue() - now; final long maxTimeToIdleMillis = e.getTimeToIdle() * ONE_SECOND; return (diff < (maxTimeToIdleMillis / 2) || diff > (maxTimeToIdleMillis)); }
public NonEternalElementData(final Element element) { super(element); timeToIdle = element.getTimeToIdle(); timeToLive = element.getTimeToLive(); }
/** * 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; }
/** * 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 SerializationModeElementData(final Element element) { this(element.getObjectValue(), element.getCreationTime(), element.getCreationTime(), element.getLastAccessTime(), element.getHitCount(), element.getTimeToLive(), element.getTimeToIdle(), element.getLastUpdateTime()); }
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()); }
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())); } }
public IdentityModeElementData(final Element element, long creationTime) { super(element.getObjectValue(), element.getCreationTime(), creationTime == Integer.MIN_VALUE ? element.getCreationTime() : creationTime, 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())); } }
public SerializationModeElementData(final Element element) { this(element.getObjectValue(), element.getCreationTime(), element.getCreationTime(), element.getLastAccessTime(), element.getHitCount(), element.usesCacheDefaultLifespan(), 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()); }
public ElementSnapshot(Element element) { this.version = element.getVersion(); this.hitCount = element.getHitCount(); this.timeToLive = element.getTimeToLive(); this.timeToIdle = element.getTimeToIdle(); this.creationTime = element.getCreationTime(); this.lastAccessTime = element.getLastAccessTime(); this.lastUpdateTime = element.getLastUpdateTime(); }