1 // Copyright (C) 2007-2008 CEA/DEN, EDF R&D, OPEN CASCADE
3 // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
4 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
6 // This library is free software; you can redistribute it and/or
7 // modify it under the terms of the GNU Lesser General Public
8 // License as published by the Free Software Foundation; either
9 // version 2.1 of the License.
11 // This library is distributed in the hope that it will be useful,
12 // but WITHOUT ANY WARRANTY; without even the implied warranty of
13 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14 // Lesser General Public License for more details.
16 // You should have received a copy of the GNU Lesser General Public
17 // License along with this library; if not, write to the Free Software
18 // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
20 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
22 // File : SALOME_ModuleCatalog.idl
23 // Author : Estelle Deville
26 /*! \file SALOME_ModuleCatalog.idl \brief interfaces used for
27 getting information from module catalog in %SALOME application
31 The main package of interfaces used for the module catalog in %SALOME application.
33 Module catalog allows to manage components of %SALOME application, to call specified in the
34 xml files interfaces with the help of AComponent interface.
36 module SALOME_ModuleCatalog
38 /*! \brief This enumeration contains a current set of definitions of the components integrated
39 into %SALOME application.
41 enum ComponentType { GEOM, /*!<Module %GEOM */
42 MESH, /*!<Module %MESH */
43 Med, /*!<Module %Med*/
44 SOLVER, /*!<Module of %SOLVER type */
45 DATA, /*!<Module %DATA */
46 VISU, /*!<Module %VISU */
47 SUPERV, /*!<Module %SUPERVISION */
48 OTHER /*!<Any other type of module */
50 //! This struct contains fields defining the parameter of the service.
51 struct ServicesParameter
53 string Parametertype; /*!<Parameter type name.*/
54 string Parametername; /*!<Parameter name.*/
57 //! enumeration to define datastream ports dependency
58 enum DataStreamDependency {
59 DATASTREAM_UNDEFINED, /*!< dependency not defined */
60 DATASTREAM_TEMPORAL, /*!< time dependency */
61 DATASTREAM_ITERATIVE /*!< iterative dependency */
64 //! struct to define datastream ports
65 struct ServicesDataStreamParameter
67 string Parametertype; /*!<Parameter type name.*/
68 string Parametername; /*!<Parameter name.*/
69 DataStreamDependency Parameterdependency; /*!<Temporal or iterative dependency.*/
72 //! The list of the parameters of service.
73 typedef sequence<ServicesParameter> ListOfServicesParameter;
74 //! The list of datastream parameters of service.
75 typedef sequence<ServicesDataStreamParameter> ListOfServicesDataStreamParameter;
78 typedef sequence<string> ListOfString;
80 //! enumeration to define data types used by services
84 Dble , /*!< a double */
85 Int , /*!< an integer */
86 Str , /*!< a string */
87 Bool , /*!< a boolean */
88 Objref , /*!< an object reference */
89 Seq , /*!< a sequence of a content type */
90 Array , /*!< an array */
91 Struc /*!< a structure with named members */
94 //! struct to define members of a Struc TypeKind
95 struct MemberDefinition
97 string name; /*!< Member name */
98 string type; /*!< Member type name */
100 //! List of member definitions in a structure
101 typedef sequence<MemberDefinition> ListOfMemberDefinition;
103 //! Struct to get the definition of types used in Salome catalogs
104 struct TypeDefinition
106 string name; /*!< Type name*/
107 TypeKind kind; /*!< Type kind.*/
108 string id; /*!< id (if needed) */
109 string content; /*!< Content type (if needed) */
110 ListOfString bases; /*!< base types (if needed) */
111 ListOfMemberDefinition members; /*!< Member types (if needed) */
114 //! list of type definitions
115 typedef sequence<TypeDefinition> ListOfTypeDefinition;
117 //! This struct contains fields defining each service.
120 string ServiceName; /*!<Name of the service.*/
121 ListOfServicesParameter ServiceinParameter; /*!< List of input parameters of the services.*/
122 ListOfServicesParameter ServiceoutParameter; /*!< List of output parameters of the services.*/
123 ListOfServicesDataStreamParameter ServiceinDataStreamParameter; /*!< List of input parameters of the services.*/
124 ListOfServicesDataStreamParameter ServiceoutDataStreamParameter; /*!< List of output parameters of the services.*/
125 boolean Servicebydefault; /*!<True if the service is taken with its default fields.*/
126 boolean TypeOfNode; /*!<True is the service is a factory node. Otherwise, it's a compute node.*/
128 //! List of services of the interface.
129 typedef sequence<Service> ListOfInterfaceService;
130 //! List of services.
131 typedef sequence<string> ListOfServices ;
132 //! This struct contains fields defining each interface.
133 struct DefinitionInterface
135 string interfacename ; /*!<Name of the interface.*/
136 ListOfInterfaceService interfaceservicelist ; /*!<List of services of the interface.*/
138 //! List of interface definitions.
139 typedef sequence<DefinitionInterface> ListOfDefInterface ;
140 //! List of interface names.
141 typedef sequence<string> ListOfInterfaces ;
143 /*! \brief PathPrefix : association of a machine name and
144 a path to a component
151 //! List of path prefixes
152 typedef sequence<PathPrefix> PathPrefixes;
154 //! Component implementation type
156 SO, /*!< component implemented as a dynamic library loadable with dlopen */
157 PY, /*!< component implemented as a python module loadable with import */
158 EXE, /*!< component implemented as an executable */
159 CEXE /*!< component to be loaded by a container which executable is given in the catalog */
162 //! Description of a component
169 ImplType implementationType;
173 ListOfDefInterface interfaces;
177 //! List of component names.
178 typedef sequence<string> ListOfComponents ;
179 //! List of computer names.
180 typedef sequence<string> ListOfComputers ;
181 //! This struct contains GUI elements used for representation of the module in %IAPP component.
184 string modulename; /*!<Name of the module.*/
185 string moduleusername; /*!<UserName of the module.*/
186 string moduleicone; /*!<Icone representing the module.*/
187 string moduleversion; /*!<Version of the module.*/
188 string modulecomment; /*!<Comment to the module.*/
190 /*! \brief List of pair GUI elements (component name, component icone)
192 used for representation of the module in %IAPP component.
194 typedef sequence<IAPP_Affich> ListOfIAPP_Affich ;
196 //! This exception is raised when a %component, a %service or a %pathPrefix is not found.
199 string what ; /*!<Indicates if it's a %component, a %service or a % pathPrefix.*/
202 /*! \brief This interface provides the common functionality information of corresponding component.
204 Information is loaded from specific xml files.
208 /*! \brief Get the list of interface names of the component
210 \return a list of interfaces of the component
212 ListOfInterfaces GetInterfaceList() ;
214 /*! \brief Get an interface of the component
216 \note <BR>If the specified interface doesn't exist, Notfound exception is thrown
217 \param interfacename Name of the interface
218 \return Required interface
220 DefinitionInterface GetInterface(in string interfacename) raises(NotFound);
222 /*! \brief Get the list of service names of an interface belonging to the component.
224 \note <BR>If the specified interface doesn't exist, Notfound exception is thrown.
225 \param interfacename Name of the interface
226 \return List of services of the required interface
228 ListOfServices GetServiceList(in string interfacename) raises(NotFound);
231 /*! \brief Get a service of an interface of the component.
233 \note <BR>If the required service or the specified interface don't exist, Notfound exception is thrown.
234 \param interfacename Name of the interface
235 \param servicename Name of the service
236 \return Required service
238 Service GetService(in string interfacename,
239 in string servicename) raises(NotFound);
241 /*! \brief Get the default service of an interface of the component.
243 \note <BR>If the required service or the specified interface don't exist, Notfound exception is thrown.
244 \param interfacename Name of the interface
245 \return Required service
247 Service GetDefaultService(in string interfacename) raises(NotFound);
249 /*! \brief Get the prefix path of the computer containing the %component.
251 \note <BR>If the required computer doesn't exist, Notfound exception is thrown
252 \param machinename Name of the machine
255 string GetPathPrefix(in string machinename) raises(NotFound);
257 /*! \brief Get the constraint affected to the component
259 constraint to be resolved by LifeCycle for the computer choice
261 readonly attribute string constraint ;
263 /*! \brief Get the component name
265 readonly attribute string componentname;
267 /*! \brief Get the user name of the component
269 readonly attribute string componentusername;
271 /*! \brief Get whether the component is multistudy or not
273 readonly attribute boolean multistudy;
275 /*! \brief Get the type of the component
277 readonly attribute ComponentType component_type ;
279 /*! \brief Get the icone of the component (for IAPP)
281 readonly attribute string component_icone;
283 /*! \brief Get the implementation type of the component
285 C++ (dyn lib), Python (module) or executable
287 readonly attribute ImplType implementation_type;
288 /*! \brief Get the implementation name of the component
290 It's the name of the dyn lib or the python module or the executable
291 if the default naming scheme is not convenient.
293 readonly attribute string implementation_name;
296 /*! \brief %Module catalog interface
298 Interface to get information about components from the module catalog in %SALOME application.
300 interface ModuleCatalog
302 /*! \brief ping the ModuleCatalog server
306 /*! \brief Returns the PID of the ModuleCatalog server
310 /*! \brief Shutdown the ModuleCatalog server
312 oneway void ShutdownWithExit();
314 /*! \brief Get the types of the catalog
316 ListOfTypeDefinition GetTypes();
318 /*! \brief Get a list of computer names of the catalog
320 ListOfComputers GetComputerList();
322 //! Get the %PathPrefix of a computer
323 string GetPathPrefix(in string machinename) raises(NotFound);
325 //! Get a list of component names of the catalog
326 ListOfComponents GetComponentList();
328 /*! \brief Get a list of pair GUI elements (component name, component icone)
329 used for representation of the module in %IAPP component.
331 ListOfIAPP_Affich GetComponentIconeList();
333 /*! \brief Get a list of component names of a particular type, which belong to this catalog.
335 ListOfComponents GetTypedComponentList(in ComponentType _component_type);
337 /*! \brief Get one component of the catalog.
339 Acomponent GetComponent(in string componentname) raises(NotFound);
341 /*! \brief Get the description of a component of the catalog.
343 ComponentDef GetComponentInfo(in string componentName) raises(NotFound);
345 /*! \brief Read a xml file and import new components from this file.
347 New components replace existing components with the same name.
349 void ImportXmlCatalogFile(in string filename) raises(NotFound);
351 /*! \brief Shutdown the module catalog server