Skip to content

Instantly share code, notes, and snippets.

@moagrius
Last active August 8, 2016 18:04
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save moagrius/c64fe1b8c087c11022991321e44b3da0 to your computer and use it in GitHub Desktop.
Save moagrius/c64fe1b8c087c11022991321e44b3da0 to your computer and use it in GitHub Desktop.
package com.qozix.messages;
import java.util.HashMap;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
/**
* Created by michaeldunn on 8/8/16.
*/
public class MessageBus {
private Map<Object, List<Actor>> mListeners = new HashMap<>();
public <T> void subscribe(T message, Actor actor) {
if (mListeners.containsKey(message)) {
mListeners.get(message).add(actor);
} else {
List<Actor> listeners = new LinkedList<>();
listeners.add(actor);
mListeners.put(message, listeners);
}
}
public <T> void unsubscribe(T message, Actor actor) {
if (mListeners.containsKey(message)) {
mListeners.get(message).remove(actor);
}
}
public <T> void publish(T message, Object data) {
if (mListeners.containsKey(message)) {
for (Actor actor : mListeners.get(message)) {
actor.translateAndReact(data);
}
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment