Search in sources :

Example 1 with Pair

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();
    }
}
Also used : ObjectBorower(org.spf4j.recyclable.ObjectBorower) Action(org.spf4j.recyclable.ObjectBorower.Action) ArrayList(java.util.ArrayList) ObjectDisposeException(org.spf4j.recyclable.ObjectDisposeException) Collection(java.util.Collection) Pair(org.spf4j.base.Pair)

Example 2 with Pair

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;
}
Also used : HashMap(java.util.HashMap) ArrayList(java.util.ArrayList) ColumnDef(org.spf4j.tsdb2.avro.ColumnDef) JFreeChart(org.jfree.chart.JFreeChart) ArrayList(java.util.ArrayList) List(java.util.List) HashMap(java.util.HashMap) Map(java.util.Map) Pair(org.spf4j.base.Pair)

Aggregations

ArrayList (java.util.ArrayList)2 Pair (org.spf4j.base.Pair)2 Collection (java.util.Collection)1 HashMap (java.util.HashMap)1 List (java.util.List)1 Map (java.util.Map)1 JFreeChart (org.jfree.chart.JFreeChart)1 ObjectBorower (org.spf4j.recyclable.ObjectBorower)1 Action (org.spf4j.recyclable.ObjectBorower.Action)1 ObjectDisposeException (org.spf4j.recyclable.ObjectDisposeException)1 ColumnDef (org.spf4j.tsdb2.avro.ColumnDef)1