public boolean nextInterval()

in java/ws-server/src/main/java/com/epam/deltix/tbwg/webapp/services/grafana/MultiAggregator.java [67:97]


    public boolean nextInterval(MessageSource<InstrumentMessage> messageSource, IntervalEntry intervalEntry) {
        intervalEntry.reuse();
        if (next()) {
            intervalEntry.setTimestamp(currentLast);
            rawValues.clear();
            do {
                if (messageSource.getMessage() != null && messageSource.getMessage().getTimeStampMs() != Long.MIN_VALUE) {
                    RawMessage rawMessage = (RawMessage) messageSource.getMessage();
                    if (rawMessage.getTimeStampMs() >= currentFirst && rawMessage.getTimeStampMs() < currentLast) {
                        decoder.decode(rawMessage, rawValues);
                    } else if (rawMessage.getTimeStampMs() >= currentLast) {
                        break;
                    }
                }
                if (!messageSource.next()) {
                    cursorFinished = true;
                }
            } while (!cursorFinished && messageSource.getMessage().getTimeStampMs() < currentLast);
            rawValues.forEach((field, values) -> {
                if (!values.getList().isEmpty()) {
                    List<Aggregation> aggs = aggregations.get(field);
                    for (Aggregation aggregation : aggs) {
                        intervalEntry.put(fieldName(field, aggregation), aggregation.aggregate(values.getList()));
                    }
                }
            });
            return true;
        } else {
            return false;
        }
    }