From 9444d8b16c93581bbab7928304cb14622050f691 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kjetil=20=C3=98rbekk?= Date: Thu, 16 Feb 2012 15:10:34 +0100 Subject: Start new Master implementation. --- same/src/main/java/com/orbekk/same/NewMaster.java | 64 +++++++++++++++++++++++ 1 file changed, 64 insertions(+) create mode 100644 same/src/main/java/com/orbekk/same/NewMaster.java (limited to 'same/src/main/java/com/orbekk') diff --git a/same/src/main/java/com/orbekk/same/NewMaster.java b/same/src/main/java/com/orbekk/same/NewMaster.java new file mode 100644 index 0000000..161586f --- /dev/null +++ b/same/src/main/java/com/orbekk/same/NewMaster.java @@ -0,0 +1,64 @@ +package com.orbekk.same; + +import java.util.List; +import com.orbekk.util.WorkQueue; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +public class NewMaster { + private Logger logger = LoggerFactory.getLogger(getClass()); + private final ConnectionManager connections; + private State state; + private Broadcaster broadcaster; + + public static NewMaster create(ConnectionManager connections, + Broadcaster broadcaster, String myUrl, String networkName) { + State state = new State(networkName); + state.update(".masterUrl", myUrl, 1); + return new NewMaster(state, connections, broadcaster); + } + + NewMaster(State initialState, ConnectionManager connections, + Broadcaster broadcaster) { + this.state = initialState; + this.connections = connections; + this.broadcaster = broadcaster; + } + + private MasterService serviceImpl = new MasterService() { + @Override + public boolean updateStateRequest(String component, + String newData, long revision) { + return false; + } + + @Override + public void joinNetworkRequest(String clientUrl) { + } + }; + + WorkQueue updateStateRequestThread = new WorkQueue() { + @Override protected void onChange() { + List pending = getAndClear(); + for (String componentName : pending) { + logger.info("Component updated: {}", componentName); + } + } + }; + + void performWork() { + updateStateRequestThread.performWork(); + } + + public void start() { + updateStateRequestThread.start(); + } + + public void interrupt() { + updateStateRequestThread.interrupt(); + } + + public MasterService getService() { + return serviceImpl; + } +} -- cgit v1.2.3