package jetbrains.mps.debugger.java.runtime.engine;
/*Generated by MPS */
import org.apache.log4j.Logger;
import org.apache.log4j.LogManager;
import java.util.List;
import java.util.ArrayList;
import org.jetbrains.annotations.NotNull;
import jetbrains.mps.debugger.java.runtime.engine.events.Context;
import jetbrains.mps.debugger.java.runtime.engine.events.EventsProcessor;
public class DebugProcessMulticaster {
private static Logger LOG = LogManager.getLogger(DebugProcessMulticaster.class);
private final List<DebugProcessListener> myListeners = new ArrayList<DebugProcessListener>();
public DebugProcessMulticaster() {
}
private List<DebugProcessListener> getListeners() {
synchronized (myListeners) {
List<DebugProcessListener> result = new ArrayList<DebugProcessListener>(myListeners);
return result;
}
}
public void addListener(@NotNull DebugProcessListener listener) {
synchronized (myListeners) {
myListeners.add(listener);
}
}
public void removeListener(@NotNull DebugProcessListener listener) {
synchronized (myListeners) {
myListeners.remove(listener);
}
}
public void connectorIsReady() {
for (DebugProcessListener listener : getListeners()) {
try {
listener.connectorIsReady();
} catch (Throwable t) {
LOG.error(null, t);
}
}
}
public void paused(@NotNull Context suspendContext) {
for (DebugProcessListener listener : getListeners()) {
try {
listener.paused(suspendContext);
} catch (Throwable t) {
LOG.error(null, t);
}
}
}
public void resumed(@NotNull Context suspendContext) {
for (DebugProcessListener listener : getListeners()) {
try {
listener.resumed(suspendContext);
} catch (Throwable t) {
LOG.error(null, t);
}
}
}
public void processDetached(@NotNull EventsProcessor process, boolean closedByUser) {
for (DebugProcessListener listener : getListeners()) {
try {
listener.processDetached(process, closedByUser);
} catch (Throwable t) {
LOG.error(null, t);
}
}
}
public void processAttached(@NotNull EventsProcessor process) {
for (DebugProcessListener listener : getListeners()) {
try {
listener.processAttached(process);
} catch (Throwable t) {
LOG.error(null, t);
}
}
}
}