package scs.demos.mapreduce.schedule; import java.util.ArrayList; import java.util.Properties; import org.omg.PortableServer.POAPackage.ServantNotActive; import org.omg.PortableServer.POAPackage.WrongPolicy; import scs.core.ComponentId; import scs.core.FacetDescription; import scs.core.IComponent; import scs.core.IComponentHelper; import scs.core.IReceptacles; import scs.core.IReceptaclesHelper; import scs.core.servant.IComponentServant; import scs.demos.mapreduce.Master; import scs.demos.mapreduce.MasterHelper; /** * Servant do IComponent que oferece a faceta scs::demos::mapreduce::Master * * @author Sand Luz Correa */ public class MasterComponent extends IComponentServant { private MasterServant masterServant = null; private Master master = null; private MonitoringReceptacles monitoringReceptaclesServant = null; private IReceptacles monitoringReceptacles = null; private final static String IFACE_MASTER = "scs::demos::mapreduce::Master"; private final static String FACET_MASTER = "Master"; private static final String IFACE_REC = "scs::core::IReceptacles"; private static final String FACET_REC = "Monitoring"; /* (non-Javadoc) * @see SCS.servant.IComponentServant#createFacets() */ @Override protected ArrayList<FacetDescription> createFacets() { ArrayList<FacetDescription> facets = new ArrayList<FacetDescription>(); FacetDescription fd = new FacetDescription(); fd.interface_name = IFACE_MASTER; fd.name= FACET_MASTER; fd.facet_ref = getMaster(); facets.add(fd); fd = new FacetDescription(); fd.interface_name = IFACE_REC; fd.name= FACET_REC; fd.facet_ref = getReceptacles(); facets.add(fd); return facets; } private Master getMaster() { if( this.masterServant == null ) { try { this.masterServant = new MasterServant(this); this.master = MasterHelper.narrow(this._poa().servant_to_reference(this.masterServant)); } catch (ServantNotActive e) { e.printStackTrace(); } catch (WrongPolicy e) { e.printStackTrace(); } } return this.master; } private IReceptacles getReceptacles() { if( this.monitoringReceptaclesServant == null ) { try { this.monitoringReceptaclesServant = new MonitoringReceptacles(); this.monitoringReceptacles = IReceptaclesHelper.narrow(this._poa().servant_to_reference (this.monitoringReceptaclesServant)); } catch (ServantNotActive e) { e.printStackTrace(); } catch (WrongPolicy e) { e.printStackTrace(); } } return this.monitoringReceptacles; } @Override protected boolean doShutdown() { return true; } @Override protected boolean doStartup() { return true; } }