use of org.spf4j.base.Pair in project spf4j by zolyfarkas.
the class SimpleSmartObjectPool method tryDispose.
@Override
public boolean tryDispose(final long timeoutMillis) throws ObjectDisposeException, InterruptedException {
factory.dispose(sample);
long deadlineNanos = TimeSource.nanoTime() + TimeUnit.MILLISECONDS.toNanos(timeoutMillis);
lock.lock();
try {
maxSize = 0;
List<Pair<ObjectBorower<T>, T>> returnedObjects = new ArrayList<>();
for (Entry<ObjectBorower<T>, Collection<T>> b : borrowedObjects.asMap().entrySet()) {
ObjectBorower<T> borrower = b.getKey();
final int nrObjects = b.getValue().size();
for (int i = 0; i < nrObjects; i++) {
Either<Action, T> object = borrower.tryRequestReturnObject();
if (object.isRight()) {
returnedObjects.add(Pair.of(borrower, object.getRight()));
}
}
}
for (Pair<ObjectBorower<T>, T> objectAndBorrower : returnedObjects) {
T object = objectAndBorrower.getSecond();
if (!borrowedObjects.remove(objectAndBorrower.getFirst(), object)) {
throw new IllegalStateException("Returned Object hasn't been borrowed " + object);
}
availableObjects.add(object);
}
ObjectDisposeException exception = disposeReturnedObjects(null);
while (!borrowedObjects.isEmpty()) {
long waitTimeNanos = deadlineNanos - TimeSource.nanoTime();
if (waitTimeNanos <= 0) {
return false;
}
if (!available.await(waitTimeNanos, TimeUnit.NANOSECONDS)) {
return false;
}
exception = disposeReturnedObjects(exception);
}
if (exception != null) {
throw exception;
}
return true;
} catch (InterruptedException | RuntimeException e) {
throw e;
} finally {
lock.unlock();
}
}
use of org.spf4j.base.Pair in project spf4j by zolyfarkas.
the class Charts method createJFreeCharts.
public static List<JFreeChart> createJFreeCharts(final TimeSeries data, final TableDef info) {
long[][] vals = data.getValues();
Map<String, Pair<List<String>, List<double[]>>> measurementsByUom = new HashMap<>();
// String[] columnMetaData = TSDBQuery.getColumnUnitsOfMeasurement(info);
int i = 0;
for (ColumnDef colDef : info.getColumns()) {
String uom = colDef.getUnitOfMeasurement();
Pair<List<String>, List<double[]>> meas = measurementsByUom.get(uom);
if (meas == null) {
meas = Pair.of((List<String>) new ArrayList<String>(), (List<double[]>) new ArrayList<double[]>());
measurementsByUom.put(uom, meas);
}
meas.getFirst().add(colDef.getName());
meas.getSecond().add(Arrays.getColumnAsDoubles(vals, i));
i++;
}
long[] timestamps = data.getTimeStamps();
List<JFreeChart> result = new ArrayList<>(measurementsByUom.size());
for (Map.Entry<String, Pair<List<String>, List<double[]>>> entry : measurementsByUom.entrySet()) {
Pair<List<String>, List<double[]>> p = entry.getValue();
final List<String> measurementNames = p.getFirst();
final List<double[]> measurements = p.getSecond();
result.add(org.spf4j.perf.impl.chart.Charts.createTimeSeriesJFreeChart("chart for " + info.getName() + ", sampleTime " + info.getSampleTime() + " ms, generated by spf4j", timestamps, measurementNames.toArray(new String[measurementNames.size()]), entry.getKey(), measurements.toArray(new double[measurements.size()][])));
}
return result;
}
Aggregations