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);
	}

}