package me.prettyprint.cassandra.connection;
import me.prettyprint.cassandra.service.CassandraHost;
import java.io.Serializable;
import java.util.HashMap;
import java.util.Map;
/**
* This class handles all the {@link ConnectionManagerListener} listeners
* @author Elyran Kogan
*/
public class ConnectionManagerListenersHandler implements Serializable {
private Map<String ,ConnectionManagerListener> listeners = new HashMap<String, ConnectionManagerListener>();
public void put(String listenerName, ConnectionManagerListener listener) {
listeners.put(listenerName, listener);
}
public void remove(String listenerName) {
listeners.remove(listenerName);
}
public void clear() {
listeners.clear();
}
public void fireOnHostDown(CassandraHost cassandraHost) {
for (ConnectionManagerListener listener : listeners.values()) {
listener.onHostDown(cassandraHost);
}
}
public void fireOnHostRestored(CassandraHost cassandraHost) {
for (ConnectionManagerListener listener : listeners.values()) {
listener.onHostRestored(cassandraHost);
}
}
public void fireOnAllHostsDown() {
for (ConnectionManagerListener listener : listeners.values()) {
listener.onAllHostsDown();
}
}
public void fireOnSuspendHost(CassandraHost cassandraHost, boolean removed) {
for (ConnectionManagerListener listener : listeners.values()) {
listener.onSuspendHost(cassandraHost, removed);
}
}
public void fireOnUnSuspendHost(CassandraHost cassandraHost, boolean readded) {
for (ConnectionManagerListener listener : listeners.values()) {
listener.onUnSuspendHost(cassandraHost, readded);
}
}
public void fireOnAddHost(CassandraHost cassandraHost, boolean added, String errorMessage, Exception e) {
for (ConnectionManagerListener listener : listeners.values()) {
listener.onAddHost(cassandraHost, added, errorMessage, e);
}
}
public void fireOnRemoveHost(CassandraHost cassandraHost, boolean removed, String message) {
for (ConnectionManagerListener listener : listeners.values()) {
listener.onRemoveHost(cassandraHost, removed, message);
}
}
}