Package railo.runtime.functions.cache

Source Code of railo.runtime.functions.cache.CacheGetMetadata

package railo.runtime.functions.cache;

import java.io.IOException;

import railo.commons.io.cache.Cache;
import railo.commons.io.cache.CacheEntry;
import railo.runtime.PageContext;
import railo.runtime.config.ConfigImpl;
import railo.runtime.exp.PageException;
import railo.runtime.ext.function.Function;
import railo.runtime.op.Caster;
import railo.runtime.type.Collection;
import railo.runtime.type.KeyImpl;
import railo.runtime.type.Struct;
import railo.runtime.type.StructImpl;
import railo.runtime.type.util.KeyConstants;

/**
*
*/
public final class CacheGetMetadata implements Function {
 
  private static final long serialVersionUID = -470089623854482521L;
 
  private static final Collection.Key CACHE_HITCOUNT = KeyImpl.intern("cache_hitcount");
  private static final Collection.Key CACHE_MISSCOUNT = KeyImpl.intern("cache_misscount");
  private static final Collection.Key CACHE_CUSTOM = KeyImpl.intern("cache_custom");
  private static final Collection.Key CREATED_TIME = KeyImpl.intern("createdtime");
  private static final Collection.Key IDLE_TIME = KeyImpl.intern("idletime");
  private static final Collection.Key LAST_HIT = KeyImpl.intern("lasthit");
  private static final Collection.Key LAST_UPDATED = KeyImpl.intern("lastupdated");

  public static Struct call(PageContext pc, String id) throws PageException {
    return call(pc, id,null);
  }
 
  public static Struct call(PageContext pc, String id, String cacheName) throws PageException {
    try {
      Cache cache = Util.getCache(pc,cacheName,ConfigImpl.CACHE_DEFAULT_OBJECT);
      CacheEntry entry = cache.getCacheEntry(Util.key(id));
     
      Struct info=new StructImpl();
      info.set(CACHE_HITCOUNT, new Double(cache.hitCount()));
      info.set(CACHE_MISSCOUNT, new Double(cache.missCount()));
      info.set(CACHE_CUSTOM, cache.getCustomInfo());
      info.set(KeyConstants._custom, entry.getCustomInfo());
     
      info.set(CREATED_TIME, entry.created());
      info.set(KeyConstants._hitcount, new Double(entry.hitCount()));
      info.set(IDLE_TIME, new Double(entry.idleTimeSpan()));
      info.set(LAST_HIT, entry.lastHit());
      info.set(LAST_UPDATED, entry.lastModified());
      info.set(KeyConstants._size, new Double(entry.size()));
      info.set(KeyConstants._timespan, new Double(entry.liveTimeSpan()));
      return info;
    } catch (IOException e) {
      throw Caster.toPageException(e);
    }
  }
}
TOP

Related Classes of railo.runtime.functions.cache.CacheGetMetadata

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.