345
|
1 package alice.datasegment;
|
|
2
|
|
3 import java.util.concurrent.ConcurrentHashMap;
|
|
4
|
|
5 import alice.daemon.IncomingTcpConnection;
|
|
6
|
|
7 public class DataSegment {
|
|
8
|
|
9 private static DataSegment dataSegment = new DataSegment();
|
|
10 private LocalDataSegmentManager local = new LocalDataSegmentManager();
|
|
11 private ConcurrentHashMap<String, DataSegmentManager> dataSegmentManagers = new ConcurrentHashMap<String, DataSegmentManager>(); //TODO Over Head
|
|
12 private ConcurrentHashMap<String, IncomingTcpConnection> acceptHash = new ConcurrentHashMap<String, IncomingTcpConnection>();
|
|
13
|
|
14 private DataSegment() {
|
|
15 dataSegmentManagers.put("local", local);
|
|
16 }
|
|
17
|
|
18 public static DataSegmentManager get(String key) {
|
|
19 return dataSegment.dataSegmentManagers.get(key);
|
|
20 }
|
|
21
|
|
22 public static LocalDataSegmentManager getLocal() {
|
|
23 return dataSegment.local;
|
|
24 }
|
|
25
|
|
26 public static void register(String key, DataSegmentManager manager) {
|
|
27 dataSegment.dataSegmentManagers.put(key, manager);
|
|
28 }
|
|
29
|
|
30 public static RemoteDataSegmentManager connect(String connectionKey, String reverseKey, String hostName, int port, boolean rFlag) {
|
|
31 RemoteDataSegmentManager manager = new RemoteDataSegmentManager(connectionKey, reverseKey, hostName, port, rFlag);
|
|
32 register(connectionKey, manager);
|
|
33 return manager;
|
|
34 }
|
|
35
|
|
36 public static void setAccept(String key, IncomingTcpConnection incoming) {
|
|
37 dataSegment.acceptHash.put(key, incoming);
|
|
38 }
|
|
39
|
|
40 public static IncomingTcpConnection getAccept(String key) {
|
|
41 return dataSegment.acceptHash.get(key);
|
|
42 }
|
|
43
|
|
44 public static void remove(String key){
|
|
45 dataSegment.dataSegmentManagers.remove(key);
|
|
46 }
|
|
47
|
|
48 }
|