Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017 package org.ros.concurrent;
00018
00019
00026 public class EventDispatcher<T> extends CancellableLoop {
00027
00028 private final T listener;
00029 private final CircularBlockingDeque<SignalRunnable<T>> events;
00030
00031 public EventDispatcher(T listener, int queueCapacity) {
00032 this.listener = listener;
00033 events = new CircularBlockingDeque<SignalRunnable<T>>(queueCapacity);
00034 }
00035
00036 public void signal(final SignalRunnable<T> signalRunnable) {
00037 events.addLast(signalRunnable);
00038 }
00039
00040 @Override
00041 public void loop() throws InterruptedException {
00042 SignalRunnable<T> signalRunnable = events.takeFirst();
00043 signalRunnable.run(listener);
00044 }
00045 }