1 // Copyright (C) 2007-2020 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, or (at your option) any later version.
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
23 // File : SALOME_ModuleCatalog.idl
24 // Author : Estelle Deville
27 /*! \file SALOME_ModuleCatalog.idl \brief interfaces used for
28 getting information from module catalog in %SALOME application
32 The main package of interfaces used for the module catalog in %SALOME application.
34 Module catalog allows to manage components of %SALOME application, to call specified in the
35 xml files interfaces with the help of AComponent interface.
37 module SALOME_ModuleCatalog
39 /*! \brief This enumeration contains a current set of definitions of the components integrated
40 into %SALOME application.
42 enum ComponentType { GEOM, /*!<Module %GEOM */
43 MESH, /*!<Module %MESH */
44 Med, /*!<Module %Med*/
45 SOLVER, /*!<Module of %SOLVER type */
46 DATA, /*!<Module %DATA */
47 VISU, /*!<Module %VISU */
48 SUPERV, /*!<Module %SUPERVISION */
49 OTHER /*!<Any other type of module */
51 //! This struct contains fields defining the parameter of the service.
52 struct ServicesParameter
54 string Parametertype; /*!<Parameter type name.*/
55 string Parametername; /*!<Parameter name.*/
58 //! enumeration to define datastream ports dependency
59 enum DataStreamDependency {
60 DATASTREAM_UNDEFINED, /*!< dependency not defined */
61 DATASTREAM_TEMPORAL, /*!< time dependency */
62 DATASTREAM_ITERATIVE /*!< iterative dependency */
65 //! struct to define datastream ports
66 struct ServicesDataStreamParameter
68 string Parametertype; /*!<Parameter type name.*/
69 string Parametername; /*!<Parameter name.*/
70 DataStreamDependency Parameterdependency; /*!<Temporal or iterative dependency.*/
73 //! The list of the parameters of service.
74 typedef sequence<ServicesParameter> ListOfServicesParameter;
75 //! The list of datastream parameters of service.
76 typedef sequence<ServicesDataStreamParameter> ListOfServicesDataStreamParameter;
79 typedef sequence<string> ListOfString;
81 //! enumeration to define data types used by services
85 Dble , /*!< a double */
86 Int , /*!< an integer */
87 Str , /*!< a string */
88 Bool , /*!< a boolean */
89 Objref , /*!< an object reference */
90 Seq , /*!< a sequence of a content type */
91 Array , /*!< an array */
92 Struc /*!< a structure with named members */
95 //! struct to define members of a Struc TypeKind
96 struct MemberDefinition
98 string name; /*!< Member name */
99 string type; /*!< Member type name */
101 //! List of member definitions in a structure
102 typedef sequence<MemberDefinition> ListOfMemberDefinition;
104 //! Struct to get the definition of types used in Salome catalogs
105 struct TypeDefinition
107 string name; /*!< Type name*/
108 TypeKind kind; /*!< Type kind.*/
109 string id; /*!< id (if needed) */
110 string content; /*!< Content type (if needed) */
111 ListOfString bases; /*!< base types (if needed) */
112 ListOfMemberDefinition members; /*!< Member types (if needed) */
115 //! list of type definitions
116 typedef sequence<TypeDefinition> ListOfTypeDefinition;
118 //! This struct contains fields defining each service.
121 string ServiceName; /*!<Name of the service.*/
122 ListOfServicesParameter ServiceinParameter; /*!< List of input parameters of the services.*/
123 ListOfServicesParameter ServiceoutParameter; /*!< List of output parameters of the services.*/
124 ListOfServicesDataStreamParameter ServiceinDataStreamParameter; /*!< List of input parameters of the services.*/
125 ListOfServicesDataStreamParameter ServiceoutDataStreamParameter; /*!< List of output parameters of the services.*/
126 boolean Servicebydefault; /*!<True if the service is taken with its default fields.*/
127 boolean TypeOfNode; /*!<True is the service is a factory node. Otherwise, it's a compute node.*/
129 //! List of services of the interface.
130 typedef sequence<Service> ListOfInterfaceService;
131 //! List of services.
132 typedef sequence<string> ListOfServices ;
133 //! This struct contains fields defining each interface.
134 struct DefinitionInterface
136 string interfacename ; /*!<Name of the interface.*/
137 ListOfInterfaceService interfaceservicelist ; /*!<List of services of the interface.*/
139 //! List of interface definitions.
140 typedef sequence<DefinitionInterface> ListOfDefInterface ;
141 //! List of interface names.
142 typedef sequence<string> ListOfInterfaces ;
144 /*! \brief PathPrefix : association of a machine name and
145 a path to a component
152 //! List of path prefixes
153 typedef sequence<PathPrefix> PathPrefixes;
155 //! Component implementation type
157 SO, /*!< component implemented as a dynamic library loadable with dlopen */
158 PY, /*!< component implemented as a python module loadable with import */
159 EXE, /*!< component implemented as an executable */
160 CEXE /*!< component to be loaded by a container which executable is given in the catalog */
163 //! 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 the type of the component
273 readonly attribute ComponentType component_type ;
275 /*! \brief Get the icone of the component (for IAPP)
277 readonly attribute string component_icone;
279 /*! \brief Get the implementation type of the component
281 C++ (dyn lib), Python (module) or executable
283 readonly attribute ImplType implementation_type;
284 /*! \brief Get the implementation name of the component
286 It's the name of the dyn lib or the python module or the executable
287 if the default naming scheme is not convenient.
289 readonly attribute string implementation_name;
292 /*! \brief %Module catalog interface
294 Interface to get information about components from the module catalog in %SALOME application.
296 interface ModuleCatalog
298 /*! \brief ping the ModuleCatalog server
302 /*! \brief Returns the PID of the ModuleCatalog server
306 /*! \brief Shutdown the ModuleCatalog server
308 oneway void ShutdownWithExit();
310 /*! \brief Get the types of the catalog
312 ListOfTypeDefinition GetTypes();
314 /*! \brief Get a list of computer names of the catalog
316 ListOfComputers GetComputerList();
318 //! Get the %PathPrefix of a computer
319 string GetPathPrefix(in string machinename) raises(NotFound);
321 //! Get a list of component names of the catalog
322 ListOfComponents GetComponentList();
324 /*! \brief Get a list of pair GUI elements (component name, component icone)
325 used for representation of the module in %IAPP component.
327 ListOfIAPP_Affich GetComponentIconeList();
329 /*! \brief Get a list of component names of a particular type, which belong to this catalog.
331 ListOfComponents GetTypedComponentList(in ComponentType _component_type);
333 /*! \brief Get one component of the catalog.
335 Acomponent GetComponent(in string componentname) raises(NotFound);
337 /*! \brief Get the description of a component of the catalog.
339 ComponentDef GetComponentInfo(in string componentName) raises(NotFound);
341 /*! \brief Read a xml file and import new components from this file.
343 New components replace existing components with the same name.
345 void ImportXmlCatalogFile(in string filename) raises(NotFound);
347 /*! \brief Shutdown the module catalog server