/*
* Galaxy
* Copyright (c) 2012-2014, Parallel Universe Software Co. All rights reserved.
*
* This program and the accompanying materials are dual-licensed under
* either the terms of the Eclipse Public License v1.0 as published by
* the Eclipse Foundation
*
* or (per the licensee's choosing)
*
* under the terms of the GNU Lesser General Public License version 3.0
* as published by the Free Software Foundation.
*/
package co.paralleluniverse.galaxy.core;
import co.paralleluniverse.common.monitoring.Metrics;
import com.codahale.metrics.Gauge;
import com.codahale.metrics.Histogram;
import static com.codahale.metrics.MetricRegistry.name;
import java.lang.ref.WeakReference;
/**
*
* @author pron
*/
class MetricsLocalStorageMonitor implements LocalStorageMonitor {
final Histogram allocated;
final Histogram deallocated;
final Gauge<Long> totalSize;
//final Counter totalSize;
public MetricsLocalStorageMonitor(String name, CacheStorage localStorage) {
allocated = Metrics.histogram(name("co.paralleluniverse", "galaxy", "CacheStorage", "allocated", name));
deallocated = Metrics.histogram(name("co.paralleluniverse", "galaxy", "CacheStorage", "deallocated", name));
final WeakReference<CacheStorage> _localStorage = new WeakReference<CacheStorage>(localStorage);
totalSize = Metrics.register(name("co.paralleluniverse", "galaxy", "CacheStorage", "totalSize", name),
new Gauge<Long>() {
@Override
public Long getValue() {
final CacheStorage localStorage = _localStorage.get();
return localStorage != null ? localStorage.getTotalAllocatedSize() : 0L;
}
});
//totalSize = Metrics.newCounter(CacheStorage.class, "totalSize", name);
}
@Override
public void allocated(int size) {
//totalSize.inc(size);
allocated.update(size);
}
@Override
public void deallocated(int size) {
//totalSize.dec(size);
deallocated.update(size);
}
}