package ServerRunner.Implementation;
import EnvironmentPluginAPI.Exceptions.TechnicalException;
import EnvironmentPluginAPI.Service.ICycleStatisticsSaver;
import EnvironmentPluginAPI.TransportTypes.TMARLAClientInstance;
import NetworkAdapter.Interface.Exceptions.ConnectionLostException;
import NetworkAdapter.Interface.IServerNetworkAdapter;
import PluginLoader.Interface.Exceptions.PluginNotReadableException;
import PluginLoader.Interface.IEnvironmentPluginLoader;
import ServerRunner.Interface.IPlayerEventHandler;
import ServerRunner.Interface.IServerRunner;
import ServerRunner.Interface.SessionIsNotInReadyStateException;
import ZeroTypes.TransportTypes.TNetworkClient;
import ZeroTypes.TransportTypes.TSession;
import java.util.List;
import java.util.UUID;
/**
* Created with IntelliJ IDEA.
* User: N3trunner
* Date: 20.05.12
* Time: 19:58
* To change this template use File | Settings | File Templates.
*/
public class ServerRunnerComponent implements IServerRunner {
ServerRunnerUseCase useCase;
public ServerRunnerComponent(ICycleStatisticsSaver saveGameStatistics, IServerNetworkAdapter networkAdapter, IEnvironmentPluginLoader environmentPluginLoader) {
this.useCase = new ServerRunnerUseCase(saveGameStatistics, networkAdapter, environmentPluginLoader);
}
@Override
public void startHosting() throws TechnicalException, ConnectionLostException {
useCase.startHosting();
}
@Override
public void stopHosting() {
useCase.stopHosting();
}
@Override
public UUID createSession(TSession session) throws TechnicalException, PluginNotReadableException {
return useCase.createSession(session);
}
@Override
public void updateSession(UUID id, TSession session) throws SessionIsNotInReadyStateException {
useCase.updateSession(id, session);
}
@Override
public TSession getSessionById(UUID id) {
return useCase.getSessionById(id);
}
@Override
public List<TSession> getAllSessions() {
return useCase.getAllSessions();
}
@Override
public void startAllReadySessions() {
useCase.startAllReadySessions();
}
@Override
public List<TNetworkClient> getFreeClients() {
return useCase.getFreeClients();
}
@Override
public void subscribeForPlayerEvent(IPlayerEventHandler playerEventHandler) {
useCase.subscribeForPlayerEvent(playerEventHandler);
}
@Override
public List<TMARLAClientInstance> getConnectedPlayers() {
return useCase.getConnectedPlayers();
}
}