package com.mongodb.event;
import com.mongodb.diagnostics.logging.Logger;
import com.mongodb.diagnostics.logging.Loggers;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import static com.mongodb.assertions.Assertions.isTrue;
import static com.mongodb.assertions.Assertions.notNull;
import static java.lang.String.format;
@Deprecated
public final class ServerEventMulticaster implements ServerListener {
private static final Logger LOGGER = Loggers.getLogger("cluster.event");
private final List<ServerListener> serverListeners;
public ServerEventMulticaster(final List<ServerListener> serverListeners) {
notNull("serverListeners", serverListeners);
isTrue("All ServerListener instances are non-null", !serverListeners.contains(null));
this.serverListeners = new ArrayList<ServerListener>(serverListeners);
}
public List<ServerListener> getServerListeners() {
return Collections.unmodifiableList(serverListeners);
}
@Override
public void serverOpening(final ServerOpeningEvent event) {
for (ServerListener cur : serverListeners) {
try {
cur.serverOpening(event);
} catch (Exception e) {
if (LOGGER.isWarnEnabled()) {
LOGGER.warn(format("Exception thrown raising server opening event to listener %s", cur), e);
}
}
}
}
@Override
public void serverClosed(final ServerClosedEvent event) {
for (ServerListener cur : serverListeners) {
try {
cur.serverClosed(event);
} catch (Exception e) {
if (LOGGER.isWarnEnabled()) {
LOGGER.warn(format("Exception thrown raising server opening event to listener %s", cur), e);
}
}
}
}
@Override
public void serverDescriptionChanged(final ServerDescriptionChangedEvent event) {
for (ServerListener cur : serverListeners) {
try {
cur.serverDescriptionChanged(event);
} catch (Exception e) {
if (LOGGER.isWarnEnabled()) {
LOGGER.warn(format("Exception thrown raising server description changed event to listener %s", cur), e);
}
}
}
}
}