summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKjetil Ørbekk <kjetil.orbekk@gmail.com>2012-03-13 12:51:09 +0100
committerKjetil Ørbekk <kjetil.orbekk@gmail.com>2012-03-13 12:51:09 +0100
commitaf836cf8e577d2dabeb6450066bcc7ff55bf70e8 (patch)
tree98632cd6e4a9e59bfcf347ef7a2b3e393f91d7f8
parent66efef77ac11f57b8e67c5ecb359a75f61790557 (diff)
Add MasterController interface.
This interface should be used by a client in order to become a master.
-rw-r--r--same/src/main/java/com/orbekk/same/Master.java4
-rw-r--r--same/src/main/java/com/orbekk/same/SameController.java32
-rw-r--r--same/src/main/resources/client.properties.example1
3 files changed, 30 insertions, 7 deletions
diff --git a/same/src/main/java/com/orbekk/same/Master.java b/same/src/main/java/com/orbekk/same/Master.java
index 88177d6..6e08c48 100644
--- a/same/src/main/java/com/orbekk/same/Master.java
+++ b/same/src/main/java/com/orbekk/same/Master.java
@@ -132,4 +132,8 @@ public class Master {
}
});
}
+
+ /** This master should take over from an earlier master. */
+ public void resumeFrom(State lastKnownState) {
+ }
}
diff --git a/same/src/main/java/com/orbekk/same/SameController.java b/same/src/main/java/com/orbekk/same/SameController.java
index 3fcfad9..c4bdfe7 100644
--- a/same/src/main/java/com/orbekk/same/SameController.java
+++ b/same/src/main/java/com/orbekk/same/SameController.java
@@ -35,6 +35,29 @@ public class SameController {
*/
private static final int timeout = 10000;
+ private MasterController masterController = new MasterController() {
+ @Override
+ public void enableMaster(State lastKnownState) {
+ String masterUrl = configuration.get("baseUrl") +
+ "MasterService.json";
+ master = Master.create(connections, serviceBroadcaster,
+ masterUrl, configuration.get("networkName"));
+ if (lastKnownState != null) {
+ master.resumeFrom(lastKnownState);
+ }
+ master.start();
+ masterService.setService(master.getService());
+ }
+
+ @Override
+ public void disableMaster() {
+ masterService.setService(null);
+ if (master != null) {
+ master.interrupt();
+ }
+ }
+ };
+
public static SameController create(BroadcasterFactory broadcasterFactory,
Configuration configuration) {
int port = configuration.getInt("port");
@@ -148,15 +171,10 @@ public class SameController {
}
public void createNetwork(String networkName) {
- masterService.setService(null);
- if (master != null) {
- master.interrupt();
- }
+ masterController.disableMaster();
+ masterController.enableMaster(null);
String masterUrl = configuration.get("baseUrl") +
"MasterService.json";
- master = Master.create(connections, serviceBroadcaster,
- masterUrl, configuration.get("networkName"));
- masterService.setService(master.getService());
joinNetwork(masterUrl);
}
diff --git a/same/src/main/resources/client.properties.example b/same/src/main/resources/client.properties.example
index d000a5d..5c13a0a 100644
--- a/same/src/main/resources/client.properties.example
+++ b/same/src/main/resources/client.properties.example
@@ -1,5 +1,6 @@
port=10011
localIp=10.0.0.6
+baseUrl=http://10.0.0.6:10011/
masterUrl=http://10.0.0.6:10010/MasterService.json
enableDiscovery=true
discoveryPort=15066