package reactor; import java.util.ArrayList; import java.util.Queue; import java.util.concurrent.ConcurrentLinkedQueue; public class Reactor extends Thread { private Queue receivedHandle; private SynchronousEventDemultplexer sync; private ArrayList listEventHandler; public Reactor(SynchronousEventDemultplexer sync) { super(); receivedHandle = new ConcurrentLinkedQueue(); listEventHandler = new ArrayList(); this.sync = sync; } public void registerHandler(EventHandler e) { listEventHandler.add(e); } public void removeHandler(EventHandler e) { listEventHandler.remove(e); } public void startHandleEvents() { System.out.println("Class = Reactor, Methode = startHandleEvents :: Attente événements..."); EventHandler retour = sync.select(receivedHandle.poll(), listEventHandler); if (retour != null) { retour.handleEvent(); } } public void receive(Handle h) { System.out.println("Class = Reactor, Methode = receive :: réception d'un événement !!! " + h.getEvent().getSource()); receivedHandle.add(h); } public void run() { while (true) { startHandleEvents(); try { Thread.sleep(1000); } catch (InterruptedException e) { e.printStackTrace(); } } } }