Mercurial > hg > RemoteEditor > REPSessionManager
view rep/RoutingTable.java @ 358:034acadc0cdc
*** empty log message ***
author | kono |
---|---|
date | Sun, 19 Oct 2008 16:54:37 +0900 |
parents | |
children | 1bde894edd83 |
line wrap: on
line source
package rep; import java.util.HashMap; import java.util.Map.Entry; public class RoutingTable { HashMap<Integer,Forwarder> sessionManagers =new HashMap<Integer,Forwarder>(); // we don't need this, but we keep it because it is easy. // editor can be reached using this routing table. HashMap<Integer,Forwarder> sessionTable =new HashMap<Integer,Forwarder>(); // session may have multiple forward, if so we have a session // here. So we don't have to keep multiple session, just keep // one. public void add(Forwarder forwarder, int smid, int sid) { if (smid>0) sessionManagers.put(smid, forwarder) ; if (sid>0) sessionTable.put(sid, forwarder) ; } public void remove(Forwarder f) { for(Entry<Integer, Forwarder> entry:sessionManagers.entrySet()) { if (entry.getValue()==f) sessionManagers.remove(entry.getKey()); } for(Entry<Integer, Forwarder> entry:sessionTable.entrySet()) { if (entry.getValue()==f) sessionTable.remove(entry.getKey()); } } public void removeSession(int sid) { sessionTable.remove(sid); } public void removeManager(int smid) { sessionManagers.remove(smid); } public Forwarder toSession(int sid) { return sessionTable.get(sid); } public Forwarder toSessionManager(int eid) { return sessionManagers.get(eid); } }