Hyperic HQ Plugin API v. 4.4.0.2

org.hyperic.hq.measurement.server.session
Class MetricDataCache

java.lang.Object
  extended by org.hyperic.hq.measurement.server.session.MetricDataCache

public class MetricDataCache
extends java.lang.Object

The MetricDataCache caches the last measurement keyed on the derived measurement id. The purpose of this cache is to avoid needing to go to the database when looking up the last value for a metric. If this area of the code becomes a bottleneck, we may want to consider ditching ehcache and just using a straight HashMap -- the code is simpler, and locking straightforward. However, it is currently nice to keep ehcache, as it allows us to configure sizes and get stats.


Method Summary
protected  boolean add(java.lang.Integer mid, MetricValue mval)
          Add a MetricValue to the cache.
 java.util.Collection bulkAdd(java.util.List data)
          Add MetricValues to the cache.
 MetricValue get(java.lang.Integer mid, long timestamp)
          Get a MetricValue from the cache.
 java.util.Map getAll(java.util.List mids, long timestamp)
          Get MetricValues from the cache within the specified time range, from timestamp to currentTimeMillis.
static MetricDataCache getInstance()
           
 void remove(java.lang.Integer mid)
          Remove a MetricValue from cache
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Method Detail

getInstance

public static MetricDataCache getInstance()

bulkAdd

public java.util.Collection bulkAdd(java.util.List data)
Add MetricValues to the cache. This method checks the timestamp of each MetricValue to be added to ensure it's not an older data point than what is already cached.

Parameters:
data - The list of DataPoint objects representing each MetricValue.
Returns:
The list of DataPoint objects added to the cache. Any DataPoints older than what is already cached will NOT be contained in this list.

add

protected boolean add(java.lang.Integer mid,
                      MetricValue mval)
Add a MetricValue to the cache. This method checks the timestamp of the MetricValue to be added to ensure it's not an older data point than what is already cached. Each invocation of this method is synchronized internally, so consider using the bulk add for batch updates to the cache.

Parameters:
mid - The measurement id.
mval - The MetricValue to store.
Returns:
true if the MetricValue was added to the cache, false otherwise.

getAll

public java.util.Map getAll(java.util.List mids,
                            long timestamp)
Get MetricValues from the cache within the specified time range, from timestamp to currentTimeMillis.

Parameters:
mids - List of Integers representing MeasurementIds.
timestamp - the start of the time range (inclusive) in millis.
Returns:
Map of Integer of measurementIds to MetricValue from the cache. If the mid does not exist or the timestamp of value is out of the specified window the returned Map will not include any representation of the mid.

get

public MetricValue get(java.lang.Integer mid,
                       long timestamp)
Get a MetricValue from the cache.

Parameters:
mid - The measurement id.
timestamp - The beginning of the cache window.
Returns:
The MetricValue from the cache, or null if the element is not found, or the item in the cache is stale.

remove

public void remove(java.lang.Integer mid)
Remove a MetricValue from cache

Parameters:
mid - The measurement id to remove.

Hyperic HQ Plugin API v. 4.4.0.2

Copyright © 2004-2006 Hyperic, Inc. support@hyperic.net, All Rights Reserved.