-// Copyright (C) 2007-2016 CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024 CEA, EDF, OPEN CASCADE
//
// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
//
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
//
+
// File : SALOME_Component.idl
// Author : Paul RASCLE, EDF
#include "SALOMEDS.idl"
#include "SALOME_Exception.idl"
#include "SALOME_PyNode.idl"
+#include "SALOME_Embedded_NamingService.idl"
+#include "SALOME_Comm.idl"
/*! \file SALOME_Component.idl \brief interfaces for EngineComponent and Container
*/
/*! \brief
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
+application. It also contains a set of interfaces used for management of %FIELDS
component in %SALOME application.
*/
module Engines
};
typedef sequence<KeyValuePair> FieldsDict;
+ typedef sequence<double> vectorOfDouble;
+ typedef sequence<string> vectorOfString;
+ typedef sequence<vectorOfString> vectorOfVectorOfString;
interface EngineComponent ;
interface fileRef ;
interface Container
{
+ void override_environment( in FieldsDict env );
+
+ void override_environment_python( in FieldsDict env );
+
+ FieldsDict get_os_environment();
+
+ void set_big_obj_on_disk_threshold(in long thresholdInByte);
+
+ void set_big_obj_on_disk_directory(in string directory);
+
+ void set_directory_for_replay_files(in string directory);
+
+ void set_number_of_retry(in long nbRetry);
+
+ void set_current_directory(in string cwd);
+
+ void set_startup_code(in string codeAtStartUp);
+
+ string get_startup_code();
+
+ void addLogFileNameGroup(in vectorOfString groupOfLogFileNames);
+
+ vectorOfVectorOfString getAllLogFileNameGroups();
+
+ void execute_python_code( in string code ) raises(SALOME::SALOME_Exception);
+
/*! \brief Loads a new component class (dynamic library).
\param componentName like COMPONENT, (Python or C++ implementation)
try to make a Python import of COMPONENT,
then a lib open of libCOMPONENTEngine.so
\param reason in case of error (return false) a string explaining the error
- \return true if load successfull or already done, false otherwise
+ \return true if load successful or already done, false otherwise
*/
boolean load_component_Library(in string componentName, out string reason);
\param componentName Name of the component which will be registered
in Registry and Name Service,
(instance number suffix added to the registered name)
- \param studyId 0 if instance is not associated to a study,
- >0 otherwise (== study id)
\return a loaded component
*/
- Engines::EngineComponent create_component_instance(in string componentName,
- in long studyId);
+ Engines::EngineComponent create_component_instance(in string componentName);
//! Create a new Python servant instance of a generic service.
/*!
This simply loads the service in the current container by importing the
corresponding Python module.
Warning: no internal registration is done, so it is up to the caller to
- manage the various instanciation.
+ manage the various instantiation.
\param serviceName Name of the service
-
- >0 otherwise (== study id)
\param reason in case of error (return void string) a string explaining the error
\return the IOR of the loaded service.
*/
\param componentName Name of the component which will be registered
in Registry and Name Service,
(instance number suffix added to the registered name)
- \param studyId 0 if instance is not associated to a study,
- >0 otherwise (== study id)
\param env a dict of env variables
\param reason in case of error (return nil) a string explaining the error
\return a loaded component
*/
Engines::EngineComponent create_component_instance_env(in string componentName,
- in long studyId, in FieldsDict env,
+ in FieldsDict env,
out string reason);
//! Find a servant instance of a component
/*!
\param registeredName Name of the component in Registry or Name Service,
without instance suffix number
- \param studyId 0 if instance is not associated to a study,
- >0 otherwise (== study id)
- \return the first instance found with same studyId
+ \return the first instance found
*/
- EngineComponent find_component_instance(in string registeredName,
- in long studyId);
+ EngineComponent find_component_instance(in string registeredName);
//! Find a servant instance of a component, or create a new one.
/*!
\param component_i Component to be removed
*/
void remove_impl(in EngineComponent component_i);
+
+ //! In case of SSL mode Returns entry to Embedded NS
+ EmbeddedNamingService get_embedded_NS_if_ssl();
+
+ boolean is_SSL_mode();
//! Unload component libraries from the container.
void finalize_removal() ;
//! name of the %container log file (this has been set by the launcher)
attribute string logfilename ;
+
+ //! name of the %container log file
+ attribute string locallogfilename ;
+
+ //! interval of time between two measures of CPU/time process container
+ attribute long monitoringtimeresms;
+
+ void verbosity(out boolean activated, out string level);
- //! Shutdown the Container process.
+ void setVerbosity(in boolean activated, in string level);
+
+ //! Shutdown the Container process. Shutdown is not immediate. It waits for all remaining invokation completion.
void Shutdown();
+ //! Shutdown the Container process. Shutdown is immediate for this method.
+ void ShutdownNow();
+
//! Returns the hostname of the container
string getHostName();
*/
PyScriptNode createPyScriptNode(in string nodeName, in string code) raises(SALOME::SALOME_Exception);
+ void removePyScriptNode(in string nodeName) raises(SALOME::SALOME_Exception);
+
//! Retrieves the last created PyScriptNode instance with createPyScriptNode.
PyScriptNode getDefaultPyScriptNode(in string nodeName);
+
+ //! This method remove all refs of PyScriptNode servant objects stored in server.
+ /*!
+ * Previous scripts created on container may have been stored in a map. This method removes them. It then clean all the contexts dict attached to them.
+ */
+ void cleanAllPyScripts();
+
+ //! Return number of CPU cores in the calculation node.
+ long getNumberOfCPUCores();
+
+ //! Return a load of each CPU core.
+ vectorOfDouble loadOfCPUCores() raises(SALOME::SALOME_Exception);
+
+ //! Set custom script to calculate a load of each CPU core.
+ /*!
+ \param script Python script to execute
+ */
+ void setPyScriptForCPULoad(in string script);
+
+ //! Nullify custom script to calculate each CPU core's load.
+ void resetScriptForCPULoad();
+
+ //! Get total physical memory of calculation node, in megabytes.
+ long getTotalPhysicalMemory();
+
+ //! Get used physical memory of calculation node, in megabytes.
+ long getTotalPhysicalMemoryInUse();
+
+ //! Obtain physical memory, used by the current process, in megabytes.
+ long getTotalPhysicalMemoryInUseByMe();
};
/*! \brief Interface of the %component.
//! Determines whether the server has already been loaded or not.
void ping();
- //! Get study associated to component instance
- /*!
- get study associated to component instance
- \return -1: not initialised (Internal Error)
- 0: multistudy component instance
- >0: study id associated to this instance
- */
- long getStudyId();
-
+ boolean isSSLMode() raises(SALOME::SALOME_Exception);
//! Remove component instance from container
/*!
Deactivates the %Component.
Returns a python script, which is being played back reproduces
the data model of component
*/
- TMPFile DumpPython(in Object theStudy,
- in boolean isPublished,
+ TMPFile DumpPython(in boolean isPublished,
in boolean isMultiFile,
out boolean isValidScript);
\return CORBA Ref of the requested file.
- \exception contains informations of what if the component cannot
+ \exception contains information of what if the component cannot
sends the file's reference.
*/
Engines::Salome_file getInputFileToService(in string service_name,
\param service_name service's name.
- \exception contains informations about files that are not in a good state.
+ \exception contains information about files that are not in a good state.
*/
void checkInputFilesToService(in string service_name) raises(SALOME::SALOME_Exception);
\return CORBA Ref of the requested file.
- \exception contains informations of what if the component cannot
+ \exception contains information of what if the component cannot
sends the file's reference.
*/
Engines::Salome_file getOutputFileToService(in string service_name,
\param service_name service's name.
- \exception contains informations about files that are not in a good state.
+ \exception contains information about files that are not in a good state.
*/
void checkOutputFilesToService(in string service_name) raises(SALOME::SALOME_Exception);
It is worth using this method only if hasObjectInfo() method returns true.
\param entry object's entry.
- \param studyId study id
\return an information about the given object.
*/
- string getObjectInfo(in long studyId, in string entry);
+ string getObjectInfo(in string entry);
//! Get version of the component
/*!
\param hdf5_file name (with path) of the hdf5_file.
- \exception contains informations of errors if the loading doesn't succeed.
+ \exception contains information of errors if the loading doesn't succeed.
*/
void load(in string hdf5_file) raises (SALOME::SALOME_Exception);
\param hdf5_file name (with path) of the hdf5_file.
- \exception contains informations of errors if the save doesn't succeed.
+ \exception contains information of errors if the save doesn't succeed.
*/
void save(in string hdf5_file) raises (SALOME::SALOME_Exception);
\param hdf5_file name (with path) of the hdf5_file.
- \exception contains informations of errors if the save doesn't succeed.
+ \exception contains information of errors if the save doesn't succeed.
*/
void save_all(in string hdf5_file) raises (SALOME::SALOME_Exception);
with createFileRef(in string origFileName) method.
The fileRef object maintains a list of (machine,filename) for copies.
If a copy exists on myMachine, getRef(myMachine) returns the file name
- of the copy on myMachine, else returns empy string.
+ of the copy on myMachine, else returns empty string.
If there is no copy on myMachine, method getFileTransfer() from container
factoryServer on refMachine provides a fileTransfer object dedicated to
CORBA file copy.