package platform;
import platform.supervisor.Supervisor;
import platform.context.ContextManager;
import platform.containersregister.ContainersManager;
import network.AddressesChecker;
import network.NetworkEmitterContainer;
import network.NetworkReceptorContainer;
import network.platform.PingService;
import platform.plugins.PlatformPluginsLauncher;
/**
* The platform Kalimucho, it runs:<br>
* The containers for network communications<br>
* The context manager<br>
* The supervisor<br>
* The plugins launcher
* @author Dalmau
*/
// Classe de la PF Kalimucho
public class Platform {
public Supervisor getSupervisor(){
return sup;
}
private NetworkEmitterContainer emetteur;
private NetworkReceptorContainer recepteur; // services de la plate-forme
private PingService pingService;
private ContainersManager gestionnaireDeConteneurs;
private Supervisor sup;
private ContextManager contexte;
private PlatformPluginsLauncher plugins;
/**
* The Kalimucho PF.
* Starts the supervisor and create the routing service.
*/
public Platform() {
// Lancer le service d'acces aux adresses de cet hote
new AddressesChecker();
// Creation du gestionnaire de contexte
contexte = new ContextManager();
// Lancer l'emetteur reseau, le recepteur reseau
emetteur = new NetworkEmitterContainer();
recepteur = new NetworkReceptorContainer();
// lancement du gestionnaire de contexte
contexte.startThread();
pingService = new PingService();
// Creation du superviseur de la PF
gestionnaireDeConteneurs = new ContainersManager();
sup = new Supervisor();
// Lancement des plugins
plugins = new PlatformPluginsLauncher(); // creer tous les plugins
// La PF se met a l'ecoute des messages recus
sup.start(); // Lancement du superviseur de la PF
}
/**
* Stops the supervisor and the routing service.
*/
public void stop() {
// Arret du service superviseur (detruit les connecteurs et envoie un message d'arret)
contexte.stopThread();
sup.stopThread();
pingService.stopThread();
// Arret des plugins
plugins.stopAllPlugins();
recepteur.stop();
emetteur.stop();
}
}