package org.bench4q.master.infrastructure.communication;

import java.io.File;
import java.util.Date;
import java.util.List;
import java.util.UUID;
import java.util.concurrent.Future;

import org.bench4q.master.domain.entity.Agent;
import org.bench4q.share.models.agent.RunScenarioModel;
import org.bench4q.share.models.agent.RunScenarioResultModel;
import org.bench4q.share.models.agent.ServerStatusModel;
import org.bench4q.share.models.agent.StopTestModel;
import org.bench4q.share.models.agent.TestBriefStatusModel;

public interface AgentMessenger {
	public RunScenarioResultModel bookTest(Agent agent, int requireLoad);

	public RunScenarioResultModel submitScenrioWithParams(Agent agent,
			UUID agentRunId, List<File> paramFiles,
			final RunScenarioModel runScenarioModel, Date realStartDate);

	public RunScenarioResultModel runWithParams(Agent agent, UUID agentRunId);

	public TestBriefStatusModel scriptBriefAll(Agent agent, UUID runId);

	public StopTestModel stop(Agent agent, UUID runId);

	public ServerStatusModel getStatus(Agent agent);

	public Future<ServerStatusModel> getStatusAsync(Agent agent);
}
