// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS // // This library is free software; you can redistribute it and/or // modify it under the terms of the GNU Lesser General Public // License as published by the Free Software Foundation; either // version 2.1 of the License. // // This library is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU // Lesser General Public License for more details. // // You should have received a copy of the GNU Lesser General Public // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // // See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org // // // // File : SALOME_Component.idl // Author : Paul RASCLE, EDF // $Header: /dn05/salome/CVS/SALOME_ROOT/idl/SALOME_Component.idl #ifndef _SALOME_COMPONENT_IDL_ #define _SALOME_COMPONENT_IDL_ /*! This is a package of interfaces used for connecting new components to %SALOME application. It also contains a set of interfaces used for management of %MED component in %SALOME application. */ module Engines { /*! General Key Value Structure to set or get properties, for component */ struct KeyValuePair { string key; any value; }; typedef sequence FieldsDict; interface Component ; /*! \brief Interface of the %Container This interface defines the process of loading and registration of new components in %SALOME application */ interface Container { /*! Loads into the container a new component, registers it and starts it's CORBA servant. \param nameToRegister Name of the component which will be registered in Registry (or Name Service) \param componentName Name of the constructed library of the %component \return a loaded component */ Component load_impl(in string nameToRegister, in string componentName); /*! Stops the component servant, and deletes all related objects \param component_i Component to be removed */ void remove_impl(in Component component_i); /*! Discharges all components from the container. */ void finalize_removal() ; /*! Determines whether the server has been loaded or not. */ void ping(); /*! Name of the %container */ readonly attribute string name ; /*! Name of the machine containing this container (location of the container). */ readonly attribute string machineName ; /*! Returns True if the %container has been killed */ boolean Kill_impl() ; /*! Shutdown the Container process. */ oneway void Shutdown(); /*! Returns the hostname of the container */ string getHostName(); /*! Returns the PID of the container */ long getPID(); }; /*! \brief Interface of the %component This interface is used for interaction between the %container and the %component and between the components inside the container. */ interface Component { /*! The name of the instance of the %Component */ readonly attribute string instanceName ; /*! The name of the interface of the %Component */ readonly attribute string interfaceName ; /*! Determines whether the server has already been loaded or not. */ void ping(); /*! Deactivates the %Component. */ void destroy() ; /*! Returns the container that the %Component refers to. */ Container GetContainerRef() ; /*! Gives a sequence of (key=string,value=any) to the component. Base class component stores the sequence in a map. The map is cleared before. This map is for use by derived classes. */ void setProperties(in FieldsDict dico); /*! returns a previously stored map (key=string,value=any) as a sequence. See setProperties(in FieldsDict dico). */ FieldsDict getProperties(); /*! This method is used by the %SUPERVISOR component. It sets the names of the graph and of the node. \param aGraphName Name of graph \param aNodeName Name of node */ void Names( in string aGraphName , in string aNodeName ) ; /*! Returns True if the %Component has been killed. */ boolean Kill_impl() ; /*! Returns True if the activity of the %Component has been stopped. (It's action can't be resumed) */ boolean Stop_impl() ; /*! Returns True if the activity of the %Component has been suspended. (It's action can be resumed) */ boolean Suspend_impl() ; /*! Returns True if the activity of the %Component has been resumed. */ boolean Resume_impl() ; /*! Returns the Cpu used (long does not run with python !...) */ long CpuUsed_impl() ; } ; } ; #endif