package railo.runtime.cache.ram;
import java.util.Date;
import railo.commons.io.cache.CacheEntry;
import railo.runtime.cache.CacheUtil;
import railo.runtime.type.Struct;
public class RamCacheEntry implements CacheEntry {
private String key;
private Object value;
private long idleTime;
private long until;
private long created;
private long modifed;
private long accessed;
private int hitCount;
public RamCacheEntry(String key, Object value, long idleTime, long until) {
this.key=key;
this.value=value;
this.idleTime=idleTime;
this.until=until;
created=modifed=accessed=System.currentTimeMillis();
hitCount=1;
}
@Override
public Date created() {
return new Date(created);
}
@Override
public Struct getCustomInfo() {
return CacheUtil.getInfo(this);
}
@Override
public String getKey() {
return key;
}
@Override
public Object getValue() {
return value;
}
@Override
public int hitCount() {
return hitCount;
}
@Override
public long idleTimeSpan() {
return idleTime;
}
@Override
public Date lastHit() {
return new Date(accessed);
}
@Override
public Date lastModified() {
return new Date(modifed);
}
@Override
public long liveTimeSpan() {
return until;
}
public long size() {
// TODO Auto-generated method stub
return 0;
}
public void update(Object value) {
this.value=value;
modifed=accessed=System.currentTimeMillis();
hitCount++;
}
public RamCacheEntry read() {
accessed=System.currentTimeMillis();
hitCount++;
return this;
}
}