--- /dev/null
+package net.pterodactylus.irc.connection;
+
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import net.pterodactylus.irc.Reply;
+
+/**
+ * Handler that can process any number of events.
+ *
+ * @author <a href="mailto:bombe@pterodactylus.net">David ‘Bombe’ Roden</a>
+ */
+public class SimpleCommandHandler implements Handler {
+
+ private final Map<String, EventProcessor> commandEventSenders =
+ new HashMap<>();
+
+ public SimpleCommandHandler addCommand(String command,
+ EventProcessor eventProcessor) {
+ commandEventSenders.put(command, eventProcessor);
+ return this;
+ }
+
+ @Override
+ public boolean willHandle(Reply reply) {
+ return commandEventSenders.containsKey(reply.command());
+ }
+
+ @Override
+ public void handleReply(Reply reply) {
+ EventProcessor eventProcessor =
+ commandEventSenders.get(reply.command());
+ eventProcessor.processEvent(reply.parameters());
+ }
+
+ /**
+ * Interface for event processors.
+ *
+ * @author <a href="mailto:bombe@pterodactylus.net">David ‘Bombe’ Roden</a>
+ */
+ @FunctionalInterface
+ public static interface EventProcessor {
+
+ void processEvent(List<String> parameters);
+
+ }
+
+}