Messages en trop ou en moins
DocThomus opened this issue · comments
Voici un petit bout de code en java, c'est l'action d'une base :
String idMessagesRecus = "";
this.broadcastMessageToAgentType(WarAgentType.WarBase, "test", "");
List<WarMessage> boiteAuxLettres = getMessages();
for (WarMessage message : boiteAuxLettres) {
if(message.getMessage() == "test") {
idMessagesRecus += message.getSenderID() + ";";
}
}
this.setDebugString("" + idMessagesRecus);
return WarBase.ACTION_IDLE;
Quand on ne sélectionne qu'une seule base au démarrage, 0 message sont reçus. Normal vu qu'aucune autre base ne lui en envoie.
Maintenant, démarrez une nouvelle partie avec 2 bases dans chaque camp, et là, la magie opère. Chaque base reçoit 0,1, ou même 2 messages. Et dans ce dernier cas, l'autre base ne reçoit rien, et le message est doublé.
C'est magique.
Même erreur pour broadcastMessageToAll(...).
Une nouvelle version de Warbot est sortie pourrais-tu confirmer si l'erreur
persiste ?
Le 11 décembre 2015 à 10:10, BONNIN Thomas notifications@github.com a
écrit :
Même erreur pour broadcastMessageToAll(...).
—
Reply to this email directly or view it on GitHub
#35 (comment)
.
Testé avec la 3.2.5, le bug est toujours présent.
Je peux tester avec la 3.2.6 si tu me fournis le .jar
PS : le .jar disponible sur http://www.lirmm.fr/~ferber/ProgAgent/index.html ne fonctionne pas. Il ne fait que 2Mo.
Il semblerait que le bug n'intervienne que quand plusieurs agents envoient le même message en même temps en faisant un broadcast. Le problème ne semble pas survenir lorsque des agents envoient le même message à un agent via la methode broadcast avec ID ; ni quand l'agent qui fait le broadcast est le seul à envoyer le message.
Le jar 3.2.6 est en ligne:
http://www.lirmm.fr/~ferber/ProgAgent/warbot-3.2.6.jar http://www.lirmm.fr/~ferber/ProgAgent/warbot-3.2.6.jar
Le 11 déc. 2015 à 16:02, BONNIN Thomas <notifications@github.com mailto:notifications@github.com> a écrit :
Il semblerait que le bug n'intervienne que quand plusieurs agents envoient le même message en même temps en faisant un broadcast. Le problème ne semble pas survenir lorsque des agents envoient le même message à un agent via la methode broadcast avec ID ; ni quand l'agent qui fait le broadcast est le seul à envoyer le message.
—
Reply to this email directly or view it on GitHub #35 (comment).
J'ai une nullPointException au moment de faire :
List<WarMessage> boiteAuxLettres = getMessages();
PS : j'ai comparé avec la 3.2.5, le même code fonctionne sous 3.2.5 mais pas en 3.2.6
De son côté, mon collègue m'a passé du code où le getMessages() ne plante pas, mais ne retourne rien... Alors que tout se passe bien avec la 3.2.5.
Rectification, l'erreur vient du broadcastMessageToAll... qui renvoie une nullPointerException.
Le broadcastMessageToAgentType ne renvoie pas d'erreur, mais n'envoie pas non plus de message.