358
|
1 package rep;
|
|
2
|
|
3 import java.util.HashMap;
|
|
4 import java.util.Map.Entry;
|
|
5
|
|
6 public class RoutingTable {
|
|
7
|
|
8 HashMap<Integer,Forwarder> sessionManagers =new HashMap<Integer,Forwarder>();
|
|
9 // we don't need this, but we keep it because it is easy.
|
|
10 // editor can be reached using this routing table.
|
|
11 HashMap<Integer,Forwarder> sessionTable =new HashMap<Integer,Forwarder>();
|
|
12 // session may have multiple forward, if so we have a session
|
|
13 // here. So we don't have to keep multiple session, just keep
|
|
14 // one.
|
|
15
|
|
16 public void add(Forwarder forwarder, int smid, int sid) {
|
|
17 if (smid>0) sessionManagers.put(smid, forwarder) ;
|
|
18 if (sid>0) sessionTable.put(sid, forwarder) ;
|
|
19 }
|
|
20
|
|
21 public void remove(Forwarder f) {
|
|
22 for(Entry<Integer, Forwarder> entry:sessionManagers.entrySet()) {
|
|
23 if (entry.getValue()==f) sessionManagers.remove(entry.getKey());
|
|
24 }
|
|
25 for(Entry<Integer, Forwarder> entry:sessionTable.entrySet()) {
|
|
26 if (entry.getValue()==f) sessionTable.remove(entry.getKey());
|
|
27 }
|
|
28 }
|
|
29
|
|
30 public void removeSession(int sid) {
|
|
31 sessionTable.remove(sid);
|
|
32 }
|
|
33
|
|
34 public void removeManager(int smid) {
|
|
35 sessionManagers.remove(smid);
|
|
36 }
|
|
37
|
|
38 public Forwarder toSession(int sid) {
|
|
39 return sessionTable.get(sid);
|
|
40 }
|
|
41
|
|
42 public Forwarder toSessionManager(int eid) {
|
|
43 return sessionManagers.get(eid);
|
|
44 }
|
|
45
|
|
46 }
|