diff options
-rw-r--r-- | same/src/main/java/com/orbekk/same/App.java | 1 | ||||
-rw-r--r-- | same/src/main/java/com/orbekk/same/SameController.java | 39 | ||||
-rw-r--r-- | same/src/main/resources/master.properties.example | 1 |
3 files changed, 32 insertions, 9 deletions
diff --git a/same/src/main/java/com/orbekk/same/App.java b/same/src/main/java/com/orbekk/same/App.java index 36429cf..b084db2 100644 --- a/same/src/main/java/com/orbekk/same/App.java +++ b/same/src/main/java/com/orbekk/same/App.java @@ -14,6 +14,7 @@ public class App { try { controller.start(); controller.searchNetworks(); + controller.createNetwork(configuration.get("networkName")); controller.joinNetwork(configuration.get("masterUrl")); controller.join(); } catch (Exception e) { diff --git a/same/src/main/java/com/orbekk/same/SameController.java b/same/src/main/java/com/orbekk/same/SameController.java index 7f45592..3fcfad9 100644 --- a/same/src/main/java/com/orbekk/same/SameController.java +++ b/same/src/main/java/com/orbekk/same/SameController.java @@ -20,6 +20,7 @@ import com.orbekk.same.http.TjwsServerBuilder; public class SameController { private Logger logger = LoggerFactory.getLogger(getClass()); private ServerContainer server; + private MasterServiceProxy masterService; private Master master; private Client client; private PaxosServiceImpl paxos; @@ -27,6 +28,7 @@ public class SameController { private BroadcasterFactory broadcasterFactory; private Configuration configuration; private ConnectionManager connections; + private Broadcaster serviceBroadcaster; /** * Timeout for remote operations in milliseconds. @@ -47,8 +49,9 @@ public class SameController { String masterUrl = baseUrl + "MasterService.json"; String clientUrl = baseUrl + "ClientService.json"; - Master master = Master.create(connections, broadcaster, - masterUrl, configuration.get("networkName")); + MasterServiceProxy master = new MasterServiceProxy(); +// Master master = Master.create(connections, broadcaster, +// masterUrl, configuration.get("networkName")); Client client = new Client(clientState, connections, clientUrl); @@ -67,13 +70,13 @@ public class SameController { ServerContainer server = new JettyServerBuilder(port) .withServlet(stateServlet, "/_/state") .withService(client.getService(), ClientService.class) - .withService(master.getService(), MasterService.class) + .withService(master, MasterService.class) .withService(paxos, PaxosService.class) .build(); SameController controller = new SameController( configuration, connections, server, master, client, - paxos, discoveryService, broadcasterFactory); + paxos, discoveryService, broadcaster, broadcasterFactory); return controller; } @@ -85,24 +88,25 @@ public class SameController { Configuration configuration, ConnectionManager connections, ServerContainer server, - Master master, + MasterServiceProxy master, Client client, PaxosServiceImpl paxos, DiscoveryService discoveryService, + Broadcaster serviceBroadcaster, BroadcasterFactory broadcasterFactory) { this.configuration = configuration; this.connections = connections; this.server = server; - this.master = master; + this.masterService = master; this.client = client; this.paxos = paxos; this.discoveryService = discoveryService; + this.serviceBroadcaster = serviceBroadcaster; this.broadcasterFactory = broadcasterFactory; } public void start() throws Exception { server.start(); - master.start(); client.start(); if (discoveryService != null) { discoveryService.start(); @@ -112,7 +116,9 @@ public class SameController { public void stop() { try { client.interrupt(); - master.interrupt(); + if (master != null) { + master.interrupt(); + } server.stop(); if (discoveryService != null) { discoveryService.interrupt(); @@ -126,7 +132,9 @@ public class SameController { try { server.join(); client.interrupt(); - master.interrupt(); + if (master != null) { + master.interrupt(); + } if (discoveryService != null) { discoveryService.join(); } @@ -139,6 +147,19 @@ public class SameController { } } + public void createNetwork(String networkName) { + masterService.setService(null); + if (master != null) { + master.interrupt(); + } + String masterUrl = configuration.get("baseUrl") + + "MasterService.json"; + master = Master.create(connections, serviceBroadcaster, + masterUrl, configuration.get("networkName")); + masterService.setService(master.getService()); + joinNetwork(masterUrl); + } + public void searchNetworks() { BroadcasterInterface broadcaster = broadcasterFactory.create(); String message = "Discover " + client.getUrl(); diff --git a/same/src/main/resources/master.properties.example b/same/src/main/resources/master.properties.example index 27a062b..edcf323 100644 --- a/same/src/main/resources/master.properties.example +++ b/same/src/main/resources/master.properties.example @@ -1,5 +1,6 @@ port=10010 localIp=10.0.0.6 +baseUrl=http://10.0.0.6:10010/ masterUrl=http://10.0.0.6:10010/MasterService.json enableDiscovery=true discoveryPort=15066 |