L'écoute des évenements
Vous pouvez gerez les évenements dans l'hyperviseur
Créez une classe pour votre commandes et implémenté là par la classe "Listener" du package be.alexandre01.dreamnetwork
Exemple
public class CustomListener implements Listener {
}
Pour capturer un event vous devez annoter une methode avec @EventCatcher et mettre dans les paramètres de la fonction crée un object étendue par la classe Event.
@EventCatcher
public void onServiceStart(CoreServiceStartEvent e){
System.out.println("Un nouveau serveur c'est allumé, son nom est "+ e.getService().getJvmExecutor().getName() +" et son ID est "+ e.getService().getId());
}
Évenements | Description |
---|---|
CoreServiceStartEvent | Est appelé lorsqu'un service est démarré. |
CoreServiceStopEvent | Est appelé lorsqu'un service est stoppé. |
CoreServiceLinkedEvent | Est appelé lorsqu'un service est lié à l'hyperviseur. |
CoreCommandExecuteEvent | Est appelé lorsqu'une commande est executé sur l'hyperviseur. |
CoreScreenCreateEvent | Est appelé lorsqu'un screen est crée. |
Enregistrement
Une fois la classe créée il vous faut l'enregistrer grace à la DNClientAPI et à la méthode getEventsFactory
@Override
public void start() {
// code en haut
getDnClientAPI().getEventsFactory().registerListener(new CustomListener());
}
Créer des évenements customisé.
Pour ceci crée une classe qui s'étend de l'objet Event
Exemple:
public class BonjourEvent extends Event {
@Getter private String message;
public BonjourEvent(String message) {
this.message = message;
}
}
Et lorsque vous avez besoin de l'appeler vous devez faire un callEvent depuis la méthode getEventsFactory.
DNClientAPI.getInstance().getEventsFactory().callEvent(new BonjourEvent("Bonjour"));
RIEN DE PLUS SIMPLE !
Vous pouvez implémenter la classe Cancellable pour faire un event qui peut etre annulé.
exemple:
@Getter
public class CoreCommandExecuteEvent extends Event implements Cancellable {
private boolean cancelled;
private String[] args;
private final DNClientAPI dnClientAPI;
public CoreCommandExecuteEvent(DNClientAPI dnClientAPI,String[] args) {
this.dnClientAPI = dnClientAPI;
this.args = args;
}
@Override
public boolean isCancelled() {
return cancelled;
}
@Override
public void setCancelled(boolean cancelled) {
this.cancelled = cancelled;
}
}
lorsque vous l'appelez, procédez comme ceci.
Exemple:
CoreCommandExecuteEvent event = new CoreCommandExecuteEvent(client.getDnClientAPI(), args);
client.getEventsFactory().callEvent(event);
if(event.isCancelled()){
Console.print("Command cancelled");
return;
}
// Faire l'action