/*
* @@COPYRIGHT@@
*/
package com.cosylab.acs.maci.plug;
import org.omg.CORBA.ORB;
import com.cosylab.acs.maci.Daemon;
import com.cosylab.acs.maci.ServiceDaemon;
import com.cosylab.acs.maci.Transport;
import alma.acs.util.ACSPorts;
import alma.acsdaemon.ContainerDaemonHelper;
import alma.acsdaemon.ServicesDaemonHelper;
import alma.acsdaemon.containerDaemonServiceName;
import alma.acsdaemon.servicesDaemonServiceName;
/**
* CORBA implementation of transport.
* @author msekoranja
*/
public class CORBATransport implements Transport {
ORB orb;
String managerIOR;
/**
* Constructor.
* @param orb CORBA ORB.
* @param managerIOR manager IOR.
*/
public CORBATransport(ORB orb, String managerIOR)
{
this.orb = orb;
this.managerIOR = managerIOR;
}
/* (non-Javadoc)
* @see com.cosylab.acs.maci.Transport#getDaemon(java.lang.String)
*/
public Daemon getDaemon(String host) {
String daemonCORBALOC = "corbaloc::" + host + ":" + ACSPorts.getContainerDaemonPort() + "/" + containerDaemonServiceName.value;
alma.acsdaemon.ContainerDaemon daemon = null;
try {
org.omg.CORBA.Object obj = orb.string_to_object(daemonCORBALOC);
daemon = ContainerDaemonHelper.narrow(obj);
if (daemon == null) {
throw new NullPointerException("Daemon object was null");
}
} catch (Throwable thr) {
throw new RuntimeException("Failed to resolve daemon reference for " + daemonCORBALOC, thr);
}
// return proxy
return new DaemonProxy(daemon);
}
/* (non-Javadoc)
* @see com.cosylab.acs.maci.Transport#getServiceDaemon(java.lang.String)
*/
public ServiceDaemon getServiceDaemon(String host) {
String daemonCORBALOC = "corbaloc::" + host + ":" + ACSPorts.getServicesDaemonPort() + "/" + servicesDaemonServiceName.value;
alma.acsdaemon.ServicesDaemon daemon = null;
try {
org.omg.CORBA.Object obj = orb.string_to_object(daemonCORBALOC);
daemon = ServicesDaemonHelper.narrow(obj);
if (daemon == null) {
throw new NullPointerException("service daemon object was null");
}
} catch (Throwable thr) {
throw new RuntimeException("Failed to resolve service daemon reference for " + daemonCORBALOC, thr);
}
// return proxy
return new ServiceDaemonProxy(daemon);
}
/* (non-Javadoc)
* @see com.cosylab.acs.maci.Transport#getManagerReference()
*/
public String getManagerReference() {
return managerIOR;
}
}