package eu.cloudwave.wp5.feedback.eclipse.costs.core.predictions;
import java.util.List;
import eu.cloudwave.wp5.common.dto.ApplicationDto;
import eu.cloudwave.wp5.common.dto.costs.AggregatedRequestsDto;
import eu.cloudwave.wp5.common.model.Prediction;
/**
* A {@link PredictionStrategy} takes some input and returns predictions as output. The underlying algorithm is
* delegated to the actual implementation.
*/
public interface PredictionStrategy {
/**
* Executes the strategy to generate cost predictions
*
* @param invokedApplication
* {@link ApplicationDto} of the microservice that has been invoked
* @param existingRequestsToInvokedApplication
* {@link AggregatedRequestsDto} with existing overall requests to the invoked microservice
* @param expectedAdditionalRequests
* {@link AggregatedRequestsDto} with expected additional requests
*
* @return {@link List<Prediction>} a list of predictions
*/
public List<Prediction> predict(ApplicationDto invokedApplication, AggregatedRequestsDto existingRequestsToInvokedApplication, AggregatedRequestsDto expectedAdditionalRequests);
}