summaryrefslogtreecommitdiff
path: root/directory/src/main/java/com/orbekk/same/directory/DirectoryServiceImpl.java
diff options
context:
space:
mode:
Diffstat (limited to 'directory/src/main/java/com/orbekk/same/directory/DirectoryServiceImpl.java')
-rw-r--r--directory/src/main/java/com/orbekk/same/directory/DirectoryServiceImpl.java32
1 files changed, 31 insertions, 1 deletions
diff --git a/directory/src/main/java/com/orbekk/same/directory/DirectoryServiceImpl.java b/directory/src/main/java/com/orbekk/same/directory/DirectoryServiceImpl.java
index 307c0ca..9c38446 100644
--- a/directory/src/main/java/com/orbekk/same/directory/DirectoryServiceImpl.java
+++ b/directory/src/main/java/com/orbekk/same/directory/DirectoryServiceImpl.java
@@ -7,9 +7,15 @@ import java.util.List;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+import com.google.protobuf.RpcCallback;
+import com.google.protobuf.RpcController;
import com.orbekk.same.discovery.DirectoryService;
+import com.orbekk.same.Services;
+import com.orbekk.same.Services.Empty;
+import com.orbekk.same.Services.MasterState;
+import com.orbekk.same.Services.NetworkDirectory;
-public class DirectoryServiceImpl implements DirectoryService {
+public class DirectoryServiceImpl extends Services.Directory implements DirectoryService {
private Logger logger = LoggerFactory.getLogger(getClass());
public final static long EXPIRE_TIME = 15 * 60l * 1000; // 15 minutes
List<NetworkEntry> networkList = new ArrayList<NetworkEntry>();
@@ -45,4 +51,28 @@ public class DirectoryServiceImpl implements DirectoryService {
networkList.remove(entry);
networkList.add(entry);
}
+
+ @Override
+ public void registerNetwork(RpcController controller, MasterState request,
+ RpcCallback<Empty> done) {
+ try {
+ registerNetwork(request.getNetworkName(), request.getMasterUrl());
+ } catch (Exception e) {
+ // No RPC call here.
+ }
+ done.run(Empty.getDefaultInstance());
+ }
+
+ @Override
+ public void getNetworks(RpcController controller, Empty request,
+ RpcCallback<NetworkDirectory> done) {
+ NetworkDirectory.Builder directory = NetworkDirectory.newBuilder();
+ for (NetworkEntry e : networkList) {
+ directory.addNetwork(MasterState.newBuilder()
+ .setMasterUrl(e.masterUrl)
+ .setNetworkName(e.networkName)
+ .build());
+ }
+ done.run(directory.build());
+ }
}