/* * @@COPYRIGHT@@ */ package com.cosylab.acs.maci.plug; import java.io.IOException; import java.io.ObjectInputStream; import java.io.ObjectOutputStream; import java.io.Serializable; import alma.acsdaemon.ServiceInfo; import alma.acsdaemon.ServicesDaemonHelper; import com.cosylab.acs.maci.RemoteException; import com.cosylab.acs.maci.ServiceDaemon; /** * CORBA Deamon Proxy. * * @author Matej Sekoranja (matej.sekoranja@cosylab.com) * @version @@VERSION@@ */ /** * @author msekoranja * */ public class ServiceDaemonProxy extends CORBAReferenceSerializator implements ServiceDaemon, Serializable { /** * Serial version UID. */ private static final long serialVersionUID = -5090533056497509227L; /** * CORBA reference. */ protected alma.acsdaemon.ServicesDaemon daemon; /** * Constructor for ServiceDaemonProxy. * @param daemon CORBA reference, non-<code>null</code>. */ public ServiceDaemonProxy(alma.acsdaemon.ServicesDaemon daemon) { this.daemon = daemon; } /* (non-Javadoc) * @see com.cosylab.acs.maci.ServiceDaemon#setManagerReference(java.lang.String) */ public void setManagerReference(String reference) throws RemoteException { try { ServiceInfo[] infos = new ServiceInfo[1]; infos[0] = new ServiceInfo("manager", "", reference); daemon.set_configuration_reference((short)alma.acs.util.ACSPorts.getBasePort(), infos); //daemon.set_manager_reference((short)alma.acs.util.ACSPorts.getBasePort(), ); } catch (Exception ex) { RemoteException re = new RemoteException("Failed to invoke 'set_configuration_reference()' method.", ex); throw re; } } /** * Returns the daemon. * @return alma.acsdaemon.Daemon */ public alma.acsdaemon.ServicesDaemon getServiceDaemon() { return daemon; } /** * Save the state of the <tt>ContainerProxy</tt> instance to a stream (that * is, serialize it). */ private void writeObject(ObjectOutputStream stream) throws IOException { stream.writeObject(serialize(daemon)); } /** * Reconstitute the <tt>ContainerProxy</tt> instance from a stream (that is, * deserialize it). */ private void readObject(ObjectInputStream stream) throws IOException, ClassNotFoundException { try { daemon = ServicesDaemonHelper.narrow(deserialize((String)stream.readObject())); } catch (Exception e) { // silent here and set reference to null. // An method after deserialization should clean such invalid reference daemon = null; } } /** * Returns a single-line rendition of this instance into text. * * @return internal state of this instance */ public String toString() { StringBuffer sbuff = new StringBuffer(); sbuff.append("ServiceDaemonProxy = { "); sbuff.append("daemon = '"); sbuff.append(daemon); sbuff.append("' }"); return new String(sbuff); } /** * @see java.lang.Object#equals(Object) */ public boolean equals(Object obj) { if (daemon == null) return (obj == null); else if (obj instanceof alma.acsdaemon.ServicesDaemon) { try { return daemon._is_equivalent((alma.acsdaemon.ServicesDaemon)obj); } catch (Exception ex) { return false; } } else if (obj instanceof ServiceDaemonProxy) { try { return daemon._is_equivalent(((ServiceDaemonProxy)obj).getServiceDaemon()); } catch (Exception ex) { return false; } } else return false; } }