import net.pterodactylus.irc.Source;
import com.google.common.base.Optional;
+import com.google.common.eventbus.EventBus;
/**
- * Handler that can process any number of events.
+ * Handler that can send events associated with commands to an {@link
+ * EventBus}.
*
* @author <a href="mailto:bombe@pterodactylus.net">David ‘Bombe’ Roden</a>
*/
private final Map<String, EventProcessor> commandEventSenders =
new HashMap<>();
+ private final EventBus eventBus;
+
+ public SimpleCommandHandler(EventBus eventBus) {
+ this.eventBus = eventBus;
+ }
public SimpleCommandHandler addCommand(String command,
EventProcessor eventProcessor) {
public void handleReply(Reply reply) {
EventProcessor eventProcessor =
commandEventSenders.get(reply.command().toLowerCase());
- eventProcessor.processEvent(reply.source(), reply.parameters());
+ eventBus.post(eventProcessor.createEvent(reply.source(),
+ reply.parameters()));
}
/**
- * Interface for event processors.
+ * Interface for event creators.
*
* @author <a href="mailto:bombe@pterodactylus.net">David ‘Bombe’ Roden</a>
*/
@FunctionalInterface
public static interface EventProcessor {
- void processEvent(Optional<Source> source, List<String> parameters);
+ Object createEvent(Optional<Source> source, List<String> parameters);
}