package AIRunner.Implementation;
import AIRunner.Interface.IAIRunner;
import AIRunner.Interface.IAIRunnerEventHandler;
import AIRunner.Interface.SessionRunningException;
import AgentSystemManagement.Interface.IAgentSystemManagement;
import AgentSystemPluginAPI.Contract.TAgentSystemDescription;
import EnvironmentPluginAPI.Exceptions.TechnicalException;
import NetworkAdapter.Interface.Exceptions.HostUnreachableException;
import NetworkAdapter.Interface.IClientNetworkAdapter;
import PluginLoader.Interface.Exceptions.PluginNotReadableException;
import PluginLoader.Interface.IAgentSystemPluginLoader;
import java.security.InvalidParameterException;
public class AIRunnerComponent implements IAIRunner {
private final IClientNetworkAdapter networkAdapter;
private final IAgentSystemManagement agentSystemManagement;
private final IAgentSystemPluginLoader agentSystemPluginLoader;
private AIRunnerUseCase aiRunnerUseCase;
public AIRunnerComponent(IClientNetworkAdapter networkAdapter, IAgentSystemManagement agentSystemManagement, IAgentSystemPluginLoader agentSystemPluginLoader){
this.networkAdapter = networkAdapter;
this.agentSystemManagement = agentSystemManagement;
this.agentSystemPluginLoader = agentSystemPluginLoader;
this.aiRunnerUseCase = new AIRunnerUseCase(networkAdapter, agentSystemManagement, agentSystemPluginLoader);
}
@Override
public void connectToServer(TAgentSystemDescription agentSystemDescription, String hostname, int port) throws HostUnreachableException, InvalidParameterException, PluginNotReadableException, TechnicalException {
aiRunnerUseCase.connectToServer(agentSystemDescription, hostname, port);
}
@Override
public void addListener(IAIRunnerEventHandler networkEventHandler) {
aiRunnerUseCase.addListener(networkEventHandler);
}
@Override
public void disconnect() throws SessionRunningException {
aiRunnerUseCase.disconnect();
}
}