annotate rep/RoutingTable.java @ 358:034acadc0cdc

*** empty log message ***
author kono
date Sun, 19 Oct 2008 16:54:37 +0900
parents
children 1bde894edd83
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
358
034acadc0cdc *** empty log message ***
kono
parents:
diff changeset
1 package rep;
034acadc0cdc *** empty log message ***
kono
parents:
diff changeset
2
034acadc0cdc *** empty log message ***
kono
parents:
diff changeset
3 import java.util.HashMap;
034acadc0cdc *** empty log message ***
kono
parents:
diff changeset
4 import java.util.Map.Entry;
034acadc0cdc *** empty log message ***
kono
parents:
diff changeset
5
034acadc0cdc *** empty log message ***
kono
parents:
diff changeset
6 public class RoutingTable {
034acadc0cdc *** empty log message ***
kono
parents:
diff changeset
7
034acadc0cdc *** empty log message ***
kono
parents:
diff changeset
8 HashMap<Integer,Forwarder> sessionManagers =new HashMap<Integer,Forwarder>();
034acadc0cdc *** empty log message ***
kono
parents:
diff changeset
9 // we don't need this, but we keep it because it is easy.
034acadc0cdc *** empty log message ***
kono
parents:
diff changeset
10 // editor can be reached using this routing table.
034acadc0cdc *** empty log message ***
kono
parents:
diff changeset
11 HashMap<Integer,Forwarder> sessionTable =new HashMap<Integer,Forwarder>();
034acadc0cdc *** empty log message ***
kono
parents:
diff changeset
12 // session may have multiple forward, if so we have a session
034acadc0cdc *** empty log message ***
kono
parents:
diff changeset
13 // here. So we don't have to keep multiple session, just keep
034acadc0cdc *** empty log message ***
kono
parents:
diff changeset
14 // one.
034acadc0cdc *** empty log message ***
kono
parents:
diff changeset
15
034acadc0cdc *** empty log message ***
kono
parents:
diff changeset
16 public void add(Forwarder forwarder, int smid, int sid) {
034acadc0cdc *** empty log message ***
kono
parents:
diff changeset
17 if (smid>0) sessionManagers.put(smid, forwarder) ;
034acadc0cdc *** empty log message ***
kono
parents:
diff changeset
18 if (sid>0) sessionTable.put(sid, forwarder) ;
034acadc0cdc *** empty log message ***
kono
parents:
diff changeset
19 }
034acadc0cdc *** empty log message ***
kono
parents:
diff changeset
20
034acadc0cdc *** empty log message ***
kono
parents:
diff changeset
21 public void remove(Forwarder f) {
034acadc0cdc *** empty log message ***
kono
parents:
diff changeset
22 for(Entry<Integer, Forwarder> entry:sessionManagers.entrySet()) {
034acadc0cdc *** empty log message ***
kono
parents:
diff changeset
23 if (entry.getValue()==f) sessionManagers.remove(entry.getKey());
034acadc0cdc *** empty log message ***
kono
parents:
diff changeset
24 }
034acadc0cdc *** empty log message ***
kono
parents:
diff changeset
25 for(Entry<Integer, Forwarder> entry:sessionTable.entrySet()) {
034acadc0cdc *** empty log message ***
kono
parents:
diff changeset
26 if (entry.getValue()==f) sessionTable.remove(entry.getKey());
034acadc0cdc *** empty log message ***
kono
parents:
diff changeset
27 }
034acadc0cdc *** empty log message ***
kono
parents:
diff changeset
28 }
034acadc0cdc *** empty log message ***
kono
parents:
diff changeset
29
034acadc0cdc *** empty log message ***
kono
parents:
diff changeset
30 public void removeSession(int sid) {
034acadc0cdc *** empty log message ***
kono
parents:
diff changeset
31 sessionTable.remove(sid);
034acadc0cdc *** empty log message ***
kono
parents:
diff changeset
32 }
034acadc0cdc *** empty log message ***
kono
parents:
diff changeset
33
034acadc0cdc *** empty log message ***
kono
parents:
diff changeset
34 public void removeManager(int smid) {
034acadc0cdc *** empty log message ***
kono
parents:
diff changeset
35 sessionManagers.remove(smid);
034acadc0cdc *** empty log message ***
kono
parents:
diff changeset
36 }
034acadc0cdc *** empty log message ***
kono
parents:
diff changeset
37
034acadc0cdc *** empty log message ***
kono
parents:
diff changeset
38 public Forwarder toSession(int sid) {
034acadc0cdc *** empty log message ***
kono
parents:
diff changeset
39 return sessionTable.get(sid);
034acadc0cdc *** empty log message ***
kono
parents:
diff changeset
40 }
034acadc0cdc *** empty log message ***
kono
parents:
diff changeset
41
034acadc0cdc *** empty log message ***
kono
parents:
diff changeset
42 public Forwarder toSessionManager(int eid) {
034acadc0cdc *** empty log message ***
kono
parents:
diff changeset
43 return sessionManagers.get(eid);
034acadc0cdc *** empty log message ***
kono
parents:
diff changeset
44 }
034acadc0cdc *** empty log message ***
kono
parents:
diff changeset
45
034acadc0cdc *** empty log message ***
kono
parents:
diff changeset
46 }