package eu.cloudwave.wp5.feedbackhandler.advices; import java.util.List; import eu.cloudwave.wp5.common.constants.AggregationInterval; import eu.cloudwave.wp5.common.dto.costs.AggregatedIncomingRequestsDto; import eu.cloudwave.wp5.feedbackhandler.model.db.DbApplication; /** * This class provides bunch of methods to get aggregated statistics about incoming requests. Incoming requests are * collected at and associated with the corresponding receiving microservice. Thus no information about the caller is * available. */ public interface IncomingRequestsDataProvider { /** * All incoming microservice requests aggregated by given time interval * * @param aggregationInterval * @param timeRangeFrom * @param timeRangeTo * @return a list of aggregated requests */ public List<AggregatedIncomingRequestsDto> getAllIncomingRequests(final AggregationInterval aggregationInterval, final Long timeRangeFrom, final Long timeRangeTo); /** * Incoming microservice requests to the given application aggregated by given time interval. Separate statistics for * each service identifier and each service method. * * @param application * the application which is used as identifier * @param aggregationInterval * @param timeRangeFrom * @param timeRangeTo * @return a list of aggregated requests */ public List<AggregatedIncomingRequestsDto> getIncomingRequestsByIdentifier( final DbApplication application, final AggregationInterval aggregationInterval, final Long timeRangeFrom, final Long timeRangeTo); /** * Incoming microservice requests to the given application aggregated by given time interval without grouping by * service method. No separate statistics for each service method, statistics are only grouped by service identifier. * * @param application * the application which is used as identifier * @param aggregationInterval * @param timeRangeFrom * @param timeRangeTo * * @return a list of aggregated requests */ public AggregatedIncomingRequestsDto getOverallIncomingRequestsByIdentifier(DbApplication application, AggregationInterval aggregationInterval, Long timeRangeFrom, Long timeRangeTo); }