# HG changeset patch # User Franck Deroche # Date 1179610546 -7200 # Node ID 8d3f8e4adba3f51b64360512510defb7ba556a28 # Parent 888f56363d6da42098db82887c8d06d1fecf4015 Utilisation d'un timer pour ne pas bloquer le thread principal. En effet, le sleep() sur le thread annulait totalement l'effet recherche initialement: en faisant dormir le thread, on empeche aussi les nouveaux messages d'etre analyses, et en consequent ils arrivent tous en cascade ensuite. A l'inverse, en utilisant un Timer et une TimerTask, on a bien une execution differee, mais on continue aussi d'avoir une reception normale des messages. diff -r 888f56363d6d -r 8d3f8e4adba3 org/defr/bots/AdressedTimerTask.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/org/defr/bots/AdressedTimerTask.java Sat May 19 23:35:46 2007 +0200 @@ -0,0 +1,16 @@ +package org.defr.bots; + +import java.util.TimerTask; + +public abstract class AdressedTimerTask extends TimerTask { + private String to; + + public AdressedTimerTask(String to) { + super(); + this.to = to; + } + + public String getTo() { + return to; + } +} diff -r 888f56363d6d -r 8d3f8e4adba3 org/defr/bots/Rusard.java --- a/org/defr/bots/Rusard.java Sat May 19 22:25:29 2007 +0200 +++ b/org/defr/bots/Rusard.java Sat May 19 23:35:46 2007 +0200 @@ -2,6 +2,8 @@ import java.util.Random; import java.util.Calendar; +import java.util.Timer; +import java.util.TimerTask; import java.io.IOException; import java.text.DateFormat; import java.util.Locale; @@ -61,18 +63,18 @@ sendMessage(replyTo, "Nous sommes le " + t); } else if(message.equalsIgnoreCase("lancement")) { - try { - Thread.sleep((long) (Math.random() * 5000)); - } catch (InterruptedException e) { - System.err.println("Interuption du sommeil, envoi direct du message"); - } - sendMessage(replyTo, "Lapin"); - addMessageListener("Bunny", new Callback() { - public void go(String sender, String replyTo, String message) { - sendMessage(replyTo, "Premier : " + sender); + Timer timer = new Timer(); + timer.schedule(new AdressedTimerTask(replyTo) { + + public void run() { + sendMessage(getTo(), "Lapin"); + addMessageListener("Bunny", new Callback() { + public void go(String sender, String replyTo, String message) { + sendMessage(replyTo, "Premier : " + sender); + } + }); } - }); - + }, (long)(Math.random() * 5000)); } else if(message.equalsIgnoreCase("de")) { int v = random.nextInt(6) + 1;