summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKjetil Ørbekk <kjetil.orbekk@gmail.com>2012-05-10 13:39:23 +0200
committerKjetil Ørbekk <kjetil.orbekk@gmail.com>2012-05-10 13:39:23 +0200
commit248378a24ced97cd70409dc4bbf8dab46d2a8bfc (patch)
tree9aceed65c72e83ce1c044b89b2918ef1f65ac214
parentbae5f63994933471956ef0fd0f3cf2c9bc324af9 (diff)
Change DirectoryService.
Use the network name as a key, and have only one network with the same name.
-rw-r--r--directory/src/main/java/com/orbekk/same/directory/DirectoryServiceImpl.java20
1 files changed, 10 insertions, 10 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 eee19f3..120ffb4 100644
--- a/directory/src/main/java/com/orbekk/same/directory/DirectoryServiceImpl.java
+++ b/directory/src/main/java/com/orbekk/same/directory/DirectoryServiceImpl.java
@@ -16,8 +16,10 @@
package com.orbekk.same.directory;
import java.util.ArrayList;
+import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
+import java.util.Map;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -32,25 +34,23 @@ import com.orbekk.same.Services.NetworkDirectory;
public class DirectoryServiceImpl extends Services.Directory {
private Logger logger = LoggerFactory.getLogger(getClass());
public final static long EXPIRE_TIME = 15 * 60l * 1000; // 15 minutes
- List<NetworkEntry> networkList = new ArrayList<NetworkEntry>();
+ Map<String, NetworkEntry> networkMap = new HashMap<String, NetworkEntry>();
synchronized void cleanNetworkList() {
long expiredTime = System.currentTimeMillis() - EXPIRE_TIME;
- for (Iterator<NetworkEntry> it = networkList.iterator(); it.hasNext();) {
- NetworkEntry e = it.next();
- if (e.hasExpired(expiredTime)) {
- it.remove();
+ for (NetworkEntry entry : networkMap.values()) {
+ if (entry.hasExpired(expiredTime)) {
+ networkMap.remove(entry.networkName);
}
}
- logger.info("Cleaned network list. Networks: {}", networkList);
+ logger.info("Cleaned network list. Networks: {}", networkMap);
}
public void registerNetwork(String networkName, String masterUrl) {
- cleanNetworkList();
NetworkEntry entry = new NetworkEntry(networkName, masterUrl);
entry.register(System.currentTimeMillis());
- networkList.remove(entry);
- networkList.add(entry);
+ networkMap.put(networkName, entry);
+ cleanNetworkList();
}
@Override
@@ -65,7 +65,7 @@ public class DirectoryServiceImpl extends Services.Directory {
RpcCallback<NetworkDirectory> done) {
cleanNetworkList();
NetworkDirectory.Builder directory = NetworkDirectory.newBuilder();
- for (NetworkEntry e : networkList) {
+ for (NetworkEntry e : networkMap.values()) {
directory.addNetwork(MasterState.newBuilder()
.setMasterLocation(e.masterUrl)
.setNetworkName(e.networkName)