package org.async.example.dcl.server; import org.async.example.dcl.EventListener; import org.async.example.dcl.Server; import org.async.rmi.Util; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import java.io.File; import java.io.IOException; import java.util.EventObject; import java.util.List; import java.util.concurrent.CopyOnWriteArrayList; /** * Created by Barak Bar Orion * 11/14/14. */ public class ServerImpl implements Server { @SuppressWarnings("UnusedDeclaration") private static final Logger logger = LoggerFactory.getLogger(ServerImpl.class); private final List<EventListener> listeners; public ServerImpl() { listeners = new CopyOnWriteArrayList<>(); } @Override public void addListener(EventListener listener) { logger.info("add listener: {} listeners are: {}", listener, listeners); listeners.add(listener); } @Override public void removeListener(EventListener listener) { listeners.remove(listener); logger.info("remove listener: {} listeners are: {}", listener, listeners); } @Override public void triggerEvent(EventObject event) { logger.info("trigger event: {} listeners are: {}", event, listeners); for (EventListener listener : listeners) { listener.onEvent(event); } } public static void main(String[] args) throws InterruptedException, IOException { System.setProperty("side", "server"); Server server = new ServerImpl(); Util.writeToFile(server, new File(SER_FILE_NAME)); Util.writeToFile(server, new File(new File(".."), SER_FILE_NAME)); Thread.sleep(Long.MAX_VALUE); } }