package scs.execution_node.servant; import java.util.HashMap; import scs.core.IComponent; import scs.core.InvalidName; import scs.execution_node.ContainerAlreadyExists; import scs.execution_node.ContainerManagerPOA; import scs.execution_node.InvalidContainer; /** * Servant da interface ContainerManager, para permitir a notificacao * do container ao seu pai (execution node) * * Este objeto deve ser instanciado e servido pelo ExecutionNode, que * passa o seu IOR pela linha de comando para o container. * * O processo do container recebe o IOR, referencia este objeto e notifica * que esta pronto para ser usado para o ExecutionNode, atraves desta interface. * * @author Eduardo Fonseca / Luiz Marques */ public class ContainerManagerServant extends ContainerManagerPOA { private HashMap<String,IComponent> containers = new HashMap<String, IComponent>(); public IComponent getContainer(String cname) { return this.containers.get(cname); } public void registerContainer(String name, IComponent ctr) throws ContainerAlreadyExists, InvalidContainer { if( containers.put(name, ctr) != null ) throw new ContainerAlreadyExists(); } public void unregisterContainer(String name) throws InvalidName { if( containers.remove(name) == null ) throw new InvalidName(); } }