# Advanced:
OPTION(SALOME_LIGHT_ONLY "Build SALOME Light only (no CORBA)" OFF)
OPTION(SALOME_USE_LIBBATCH "Use LibBatch in KERNEL" OFF)
-OPTION(SALOME_USE_SIMAN "Add SIMAN support" OFF)
CMAKE_DEPENDENT_OPTION(SALOME_PACO_PARALLEL "Build with PACO (implies SALOME_USE_MPI)" OFF
"NOT SALOME_LIGHT_ONLY" OFF)
OPTION(SALOME_USE_PORTMANAGER "Add PortManager support" ON)
"NOT SALOME_PACO_PARALLEL" ON)
CMAKE_DEPENDENT_OPTION(SALOME_USE_MPI "Use MPI containers" ${SALOME_USE_MPI}
"NOT SALOME_LIGHT_ONLY" OFF)
-MARK_AS_ADVANCED(SALOME_LIGHT_ONLY SALOME_USE_LIBBATCH SALOME_USE_SIMAN SALOME_PACO_PARALLEL SALOME_USE_PORTMANAGER)
+MARK_AS_ADVANCED(SALOME_LIGHT_ONLY SALOME_USE_LIBBATCH SALOME_PACO_PARALLEL SALOME_USE_PORTMANAGER)
# Required prerequisites
# Find "big" prerequisites first - they reference themselves many others
# Optional prerequisites
# ======================
-IF(SALOME_USE_SIMAN)
- FIND_PACKAGE(SalomeSimanIO)
- SALOME_LOG_OPTIONAL_PACKAGE(SimanIO SALOME_USE_SIMAN)
- ADD_DEFINITIONS(-DWITH_SIMANIO)
-ENDIF()
IF(NOT SALOME_LIGHT_ONLY)
FIND_PACKAGE(SalomeOmniORB REQUIRED)
FIND_PACKAGE(SalomeOmniORBPy REQUIRED)
SET(OMNIORB_ROOT_DIR "${OMNIORB_ROOT_DIR}")
SET(OMNIORBPY_ROOT_DIR "${OMNIORBPY_ROOT_DIR}")
SET(LIBBATCH_ROOT_DIR "${LIBBATCH_ROOT_DIR}")
-SET(SIMANIO_ROOT_DIR "${SIMANIO_ROOT_DIR}")
SET(CONF_INCLUDE_DIRS "${PROJECT_SOURCE_DIR}/include" "${PROJECT_BINARY_DIR}/include")
# Build variables that will be expanded when configuring Salome<MODULE>Config.cmake:
SALOME_CONFIGURE_PREPARE(CppUnit Graphviz Doxygen Sphinx MPI omniORB LibBatch
- PThread Boost HDF5 libXml2 Python SimanIO)
+ PThread Boost HDF5 libXml2 Python)
CONFIGURE_PACKAGE_CONFIG_FILE(${PROJECT_NAME}Config.cmake.in
${PROJECT_BINARY_DIR}/${PROJECT_NAME}Config.cmake
PATH_VARS CONF_INCLUDE_DIRS SALOME_INSTALL_CMAKE CMAKE_INSTALL_PREFIX
CPPUNIT_ROOT_DIR GRAPHVIZ_ROOT_DIR DOXYGEN_ROOT_DIR
SPHINX_ROOT_DIR MPI_ROOT_DIR OMNIORB_ROOT_DIR OMNIORBPY_ROOT_DIR LIBBATCH_ROOT_DIR
- SIMANIO_ROOT_DIR PTHREAD_ROOT_DIR BOOST_ROOT_DIR HDF5_ROOT_DIR LIBXML2_ROOT_DIR
+ PTHREAD_ROOT_DIR BOOST_ROOT_DIR HDF5_ROOT_DIR LIBXML2_ROOT_DIR
PYTHON_ROOT_DIR SWIG_ROOT_DIR)
# - in the install tree (VSR 16/08/2013: TEMPORARILY COMMENT THIS - TO REMOVE?):
# PATH_VARS CONF_INCLUDE_DIRS SALOME_INSTALL_CMAKE CMAKE_INSTALL_PREFIX
# CPPUNIT_ROOT_DIR GRAPHVIZ_ROOT_DIR DOXYGEN_ROOT_DIR
# SPHINX_ROOT_DIR MPI_ROOT_DIR OMNIORB_ROOT_DIR OMNIORBPY_ROOT_DIR LIBBATCH_ROOT_DIR
-# SIMANIO_ROOT_DIR PTHREAD_ROOT_DIR BOOST_ROOT_DIR HDF5_ROOT_DIR LIBXML2_ROOT_DIR
+# PTHREAD_ROOT_DIR BOOST_ROOT_DIR HDF5_ROOT_DIR LIBXML2_ROOT_DIR
# PYTHON_ROOT_DIR SWIG_ROOT_DIR)
WRITE_BASIC_PACKAGE_VERSION_FILE(${PROJECT_BINARY_DIR}/${PROJECT_NAME}ConfigVersion.cmake
# - Config file for the @PROJECT_NAME@ package
-# It defines the following variables.
+# It defines the following variables.
# Specific to the pacakge @PROJECT_NAME@ itself:
# @PROJECT_NAME_UC@_ROOT_DIR_EXP - the root path of the installation providing this CMake file
#
### Initialisation performed by CONFIGURE_PACKAGE_CONFIG_FILE:
@PACKAGE_INIT@
-# Load the dependencies for the libraries of @PROJECT_NAME@
-# (contains definitions for IMPORTED targets). This is only
+# Load the dependencies for the libraries of @PROJECT_NAME@
+# (contains definitions for IMPORTED targets). This is only
# imported if we are not built as a subproject (in this case targets are already there)
IF(NOT TARGET SALOMEBasics AND NOT @PROJECT_NAME@_BINARY_DIR)
INCLUDE("@PACKAGE_SALOME_INSTALL_CMAKE@/@PROJECT_NAME@Targets.cmake")
-ENDIF()
+ENDIF()
# Package root dir:
SET_AND_CHECK(KERNEL_ROOT_DIR_EXP "@PACKAGE_CMAKE_INSTALL_PREFIX@")
SET(SALOME_KERNEL_LIGHT_ONLY @SALOME_LIGHT_ONLY@)
SET(SALOME_USE_LIBBATCH @SALOME_USE_LIBBATCH@)
-SET(SALOME_USE_SIMAN @SALOME_USE_SIMAN@)
-IF(SALOME_USE_SIMAN)
- LIST(APPEND KERNEL_DEFINITIONS "-DWITH_SIMANIO")
-ENDIF()
-
SET(SALOME_USE_PORTMANAGER @SALOME_USE_PORTMANAGER@)
IF(SALOME_USE_PORTMANAGER)
LIST(APPEND KERNEL_DEFINITIONS "-DWITH_PORTMANAGER")
IF(SALOME_USE_LIBBATCH)
SET_AND_CHECK(LIBBATCH_ROOT_DIR_EXP "@PACKAGE_LIBBATCH_ROOT_DIR@")
ENDIF()
-IF(SALOME_USE_SIMAN)
- SET_AND_CHECK(SIMANIO_ROOT_DIR_EXP "@PACKAGE_SIMANIO_ROOT_DIR@")
-ENDIF()
SET_AND_CHECK(PTHREAD_ROOT_DIR_EXP "@PACKAGE_PTHREAD_ROOT_DIR@")
SET_AND_CHECK(HDF5_ROOT_DIR_EXP "@PACKAGE_HDF5_ROOT_DIR@")
SET_AND_CHECK(PYTHON_ROOT_DIR_EXP "@PACKAGE_PYTHON_ROOT_DIR@")
SET_AND_CHECK(SWIG_ROOT_DIR_EXP "@PACKAGE_SWIG_ROOT_DIR@")
-# For all prerequisites, load the corresponding targets if the package was used
+# For all prerequisites, load the corresponding targets if the package was used
# in CONFIG mode. This ensures dependent projects link correctly
# without having to set LD_LIBRARY_PATH:
SET(_PREREQ @_PREREQ_LIST@)
IF(NOT _list_len EQUAL 0)
# Another CMake stupidity - FOREACH(... RANGE r) generates r+1 numbers ...
MATH(EXPR _range "${_list_len}-1")
- FOREACH(_p RANGE ${_range})
+ FOREACH(_p RANGE ${_range})
LIST(GET _PREREQ ${_p} _pkg )
LIST(GET _PREREQ_CONFIG_DIR ${_p} _pkg_dir)
LIST(GET _PREREQ_COMPONENTS ${_p} _pkg_compo)
MESSAGE(STATUS "===> Reloading targets from ${_pkg} ...")
IF(NOT _pkg_compo)
- FIND_PACKAGE(${_pkg} REQUIRED NO_MODULE
- PATHS "${_pkg_dir}"
+ FIND_PACKAGE(${_pkg} REQUIRED NO_MODULE
+ PATHS "${_pkg_dir}"
NO_DEFAULT_PATH)
ELSE()
STRING(REPLACE "," ";" _compo_lst "${_pkg_compo}")
MESSAGE(STATUS "===> (components: ${_pkg_compo})")
FIND_PACKAGE(${_pkg} REQUIRED NO_MODULE
- COMPONENTS ${_compo_lst}
+ COMPONENTS ${_compo_lst}
PATHS "${_pkg_dir}"
NO_DEFAULT_PATH)
ENDIF()
SET(SALOME_INSTALL_SCRIPT_DATA "@SALOME_INSTALL_SCRIPT_DATA@")
SET(SALOME_INSTALL_SCRIPT_PYTHON "@SALOME_INSTALL_SCRIPT_PYTHON@")
SET(SALOME_INSTALL_APPLISKEL_SCRIPTS "@SALOME_INSTALL_APPLISKEL_SCRIPTS@")
-SET(SALOME_INSTALL_APPLISKEL_PYTHON "@SALOME_INSTALL_APPLISKEL_PYTHON@")
+SET(SALOME_INSTALL_APPLISKEL_PYTHON "@SALOME_INSTALL_APPLISKEL_PYTHON@")
SET(SALOME_INSTALL_CMAKE "@SALOME_INSTALL_CMAKE@")
SET(SALOME_INSTALL_CMAKE_LOCAL "@SALOME_INSTALL_CMAKE_LOCAL@")
SET(SALOME_INSTALL_PYTHON "@SALOME_INSTALL_PYTHON@")
if [[ "$cur" == -* ]]; then
case $command in
start)
- options='-t --terminal -g --gui -d --show-desktop= -o --hide-desktop -b --batch -l --logger -f --log-file= -r --resources= -x --xterm -m --modules= -e --embedded= -s --standalone= -p --portkill -k --killall -i --interp= -z --splash= -c --catch-exceptions= --print-port --nosave-config --pinter --ns-port-log= --test= --play= --gdb-session --ddd-session --valgrind-session -w --shutdown-servers= --foreground= --wake-up-session --server-launch-mode= --port= --siman --siman-study= --siman-scenario= --siman-user= --version -h --help --with-mpi-module= --config= --extra_env='
+ options='-t --terminal -g --gui -d --show-desktop= -o --hide-desktop -b --batch -l --logger -f --log-file= -r --resources= -x --xterm -m --modules= -e --embedded= -s --standalone= -p --portkill -k --killall -i --interp= -z --splash= -c --catch-exceptions= --print-port --nosave-config --pinter --ns-port-log= --test= --play= --gdb-session --ddd-session --valgrind-session -w --shutdown-servers= --foreground= --wake-up-session --server-launch-mode= --port= --version -h --help --with-mpi-module= --config= --extra_env='
;;
shell)
options='-h --help -p --port= -m --machine= -d --directory= -u --user= --with-mpi-module= --config= --extra_env='
shutdown_servers_nam = "shutdown_servers"
foreground_nam = "foreground"
wake_up_session_nam = "wake_up_session"
-siman_nam = "siman"
-siman_study_nam = "siman_study"
-siman_scenario_nam = "siman_scenario"
-siman_user_nam = "siman_user"
# values in XML configuration file giving specific module parameters (<module_name> section)
# which are stored in opts with key <module_name>_<parameter> (eg SMESH_plugins)
return string.atoi(strloc)
return strloc
pass
-
+
def strValue( self, str ):
strloc = str
try:
dest="use_port",
help=help_str)
- # SIMAN launch mode
- help_str = "Special mode for interacting with SIMAN."
- o_siman = optparse.Option("--siman",
- action="store_true",
- dest="siman",
- help=help_str)
-
- # SIMAN study
- help_str = "SIMAN study identifier."
- o_siman_study = optparse.Option("--siman-study",
- metavar="<id>",
- type="string",
- action="store",
- dest="siman_study",
- help=help_str)
-
- # SIMAN scenario
- help_str = "SIMAN scenario identifier."
- o_siman_scenario = optparse.Option("--siman-scenario",
- metavar="<id>",
- type="string",
- action="store",
- dest="siman_scenario",
- help=help_str)
-
- # SIMAN user
- help_str = "SIMAN user identifier."
- o_siman_user = optparse.Option("--siman-user",
- metavar="<id>",
- type="string",
- action="store",
- dest="siman_user",
- help=help_str)
-
# All options
opt_list = [o_t,o_g, # GUI/Terminal
o_d,o_o, # Desktop
o_wake_up,
o_slm, # Server launch mode
o_port, # Use port
- o_siman, # Siman launch mode
- o_siman_study, # Siman study
- o_siman_scenario,# Siman scenario
- o_siman_user, # Siman user
]
#std_options = ["gui", "desktop", "log_file", "resources",
if cmd_opts.wake_up_session is not None:
args[wake_up_session_nam] = cmd_opts.wake_up_session
- # siman options
- if cmd_opts.siman is not None:
- args[siman_nam] = cmd_opts.siman
- if cmd_opts.siman_study is not None:
- args[siman_study_nam] = cmd_opts.siman_study
- if cmd_opts.siman_scenario is not None:
- args[siman_scenario_nam] = cmd_opts.siman_scenario
- if cmd_opts.siman_user is not None:
- args[siman_user_nam] = cmd_opts.siman_user
-
####################################################
# Add <theAdditionalOptions> values to args
for add_opt in theAdditionalOptions:
return cata_path
-_siman_name = None
-def simanStudyName(args):
- global _siman_name
- if _siman_name is None:
- # siman session paramenters and checkout processing
- _siman_name = ""
- if 'siman' in args:
- siman_data = []
- for param in [ 'study', 'scenario', 'user']:
- siman_param = "siman_%s"%param
- if siman_param in args:
- siman_data.append(args[siman_param])
- else:
- print "SIMAN %s must be defined using parameter --siman-%s=XXX" % (siman_param, siman_param)
- pass
- pass
- if len(siman_data) == 3:
- _siman_name = "_".join(siman_data)
- pass
- pass
- pass
- return _siman_name
-
class CatalogServer(Server):
def __init__(self,args):
self.args=args
if self.args['study_hdf'] is not None:
self.SCMD2+=['--study-hdf=%s'%self.args['study_hdf']]
pass
- if simanStudyName(self.args):
- self.SCMD2+=['--siman-study=%s'%simanStudyName(self.args)]
- pass
pass
if self.args.has_key('pyscript') and len(self.args['pyscript']) > 0:
msg = json.dumps(self.args['pyscript'], cls=ScriptAndArgsObjectEncoder)
myServer.run()
clt.waitLogger("Logger")
- # set siman python path before the session server launching to import scripts inside python console
- if simanStudyName(args):
- # MPV: use os.environ here because session server is launched in separated process and sys.path is missed in this case
- from salome_utils import getTmpDir
- ppath = os.path.join(getTmpDir, "SimanSalome", args['siman_study'],
- args['siman_scenario'], args['siman_user'])
- os.environ["PYTHONPATH"] = ppath + os.pathsep + os.environ["PYTHONPATH"]
-
# Launch Session Server (to show splash ASAP)
#
except ImportError:
pass
- # siman session paramenters and checkout processing
- if simanStudyName(args):
- print '**********************************************'
- print "Siman study name= '" + simanStudyName(args) + "'"
- import SALOMEDS
- obj = clt.Resolve('myStudyManager')
- myStudyManager = obj._narrow(SALOMEDS.StudyManager)
- aNewStudy = myStudyManager.NewStudy(simanStudyName(args))
- aSimS = myStudyManager.GetSimanStudy()
- aSimS._set_StudyId(args['siman_study'])
- aSimS._set_ScenarioId(args['siman_scenario'])
- aSimS._set_UserId(args['siman_user'])
- aSimS.CheckOut(aNewStudy)
- # if session server is enabled, activate the created study
- if args["gui"]:
- print "Activate the SIMAN study in the SALOME GUI"
- obj = clt.Resolve('/Kernel/Session')
- mySession = obj._narrow(SALOME.Session)
- mySession.emitMessage("simanCheckoutDone " + simanStudyName(args))
- print '**********************************************'
-
return clt
# -----------------------------------------------------------------------------
exception StudyObjectAlreadyExists {};
//! Invalid name of the %study exception
exception StudyNameError {};
-//! Invalid study comment
+//! Invalid study comment
exception StudyCommentError {};
/*! \brief The name of the %Study
*/
void SetContext(in string thePath) raises (StudyInvalidReference, StudyInvalidContext);
/*! \brief Get the context of the %Study.
-
+
<em>See \ref example23 for an example of this method usage in batchmode of %SALOME application.</em>
*/
string GetContext() raises (StudyInvalidReference, StudyInvalidContext);
long long GetLocalImpl(in string theHostname, in long thePID, out boolean isLocal);
-/*! \brief Mark this Study as being locked by the given locker.
+/*! \brief Mark this Study as being locked by the given locker.
The lock status can be checked by method IsStudyLocked
\param theLockerID identifies a locker of the study can be for ex. IOR of the engine that locks the study.
/*! \brief Indicate if the Study is locked
- Returns True if the Study was marked locked.
+ Returns True if the Study was marked locked.
*/
boolean IsStudyLocked() raises(StudyInvalidReference);
-/*! \brief Mark this Study as being unlocked by the given locker.
+/*! \brief Mark this Study as being unlocked by the given locker.
The lock status can be checked by method IsStudyLocked
\param theLockerID identifies a locker of the study can be for ex. IOR of the engine that unlocks the study.
*/
void UnLockStudy(in string theLockerID) raises(StudyInvalidReference);
-/*! \brief Get the list of IDs of the Study's lockers.
+/*! \brief Get the list of IDs of the Study's lockers.
*/
ListOfStrings GetLockerID() raises(StudyInvalidReference);
-/*! \brief Create real variable with Name theVarName and value theValue
+/*! \brief Create real variable with Name theVarName and value theValue
(or set if variable value into theValue already exists)
\param theVarName is a name of the variable
*/
void SetReal( in string theVarName, in double theValue ) raises(StudyInvalidReference);
-/*! \brief Create integer variable with Name theVarName and value theValue
+/*! \brief Create integer variable with Name theVarName and value theValue
(or set if variable value into theValue already exists)
\param theVarName is a name of the variable
\param theVarName is a value of the variable.
*/
void SetInteger( in string theVarName, in long theValue ) raises(StudyInvalidReference);
-/*! \brief Create boolean variable with Name theVarName and value theValue
+/*! \brief Create boolean variable with Name theVarName and value theValue
(or set if variable value into theValue already exists)
\param theVarName is a name of the variable
*/
void SetBoolean( in string theVarName, in boolean theValue ) raises(StudyInvalidReference);
-/*! \brief Create string variable with Name theVarName and value theValue
+/*! \brief Create string variable with Name theVarName and value theValue
(or set if variable value into theValue already exists)
\param theVarName is a name of the variable
\param theVarName is a name of the variable.
*/
string GetString( in string theVarName ) raises(StudyInvalidReference);
-
+
/*! \brief Indicate if a variable is real
/*! \brief Parse variables used for object creation
- \param string with variables, separated by special symbol.
+ \param string with variables, separated by special symbol.
\return Variables list.
*/
ListOfListOfStrings ParseVariables( in string theVars ) raises(StudyInvalidReference);
\param modify when \c true, observer receives any object's modification events;
otherwise observer receives object's creation events only
*/
- void attach(in SALOMEDS::Observer theObserver, in boolean modify);
+ void attach(in SALOMEDS::Observer theObserver, in boolean modify);
/*!
Detach an observer from the Study
\param theObserver observer to be detached
*/
- void detach(in SALOMEDS::Observer theObserver);
+ void detach(in SALOMEDS::Observer theObserver);
};
- //===========================================================================
- /*! \brief %SimanStudy Interface
-
- The Siman (simulation management) study is an interface extension to the %Study
- with functions for working with SIMAN server. Is allows to get data from SIMAN (check-out operation)
- and to store it back (check-in operation).
- This interface is correctly working if SALOME is compiled with SimanIO library, launched with siman
- option and connection to SIMAN server is established and alive. Only one study per application,
- checked out from the SIMAN is SimanStudy. For other studies all functionality is unaccessible.
-*/
-
- interface SimanStudy
- {
-
-//! No connection with SIMAN server
- exception SimanStudyNoConnection {};
-//! There is no SimanStudy with: study with checked out data.
- exception SimanStudyNotExists {};
-
-/*! \brief The ID of the study in SIMAN server
-
- This is equivalent to the methods setStudyId() & getStudyId()
-*/
- attribute string StudyId;
-
-/*! \brief The ID of the scenario in SIMAN server
-
- This is equivalent to the methods setScenarioId() & getScenarioId()
-*/
- attribute string ScenarioId;
-/*! \brief The ID of the user in SIMAN server
-
- This is equivalent to the methods setUserId() & getUserId()
-*/
- attribute string UserId;
-
-/*! \brief Get data from SIMAN and put it to the given study
-
- This method is called for just created study to make it referenced
- by this Siman study. Also it fills this study by the checked out
- data from SIMAN server.
- Warning: StudyID, ScenarioID and User Id must be set before calling of this method!
-
- \param theTarget referenced study for checking out
-*/
- void CheckOut(in Study theTarget);
-
-/*! \brief Get data from the source study and store in SIMAN
-
- It works only with already checked out study.
- \param theModuleName name of the module the check in must be perfrormed for. If empty, check in is performed for all modules.
-*/
- void CheckIn(in string theModuleName);
-
-/*! \brief Returns the %Study with checked out data
-
- If study is null, there is no such study in this application instance, or Salome was
- launched without siman option.
-*/
- Study getReferencedStudy();
-
-};
-
//==========================================================================
/*! \brief %Study Builder Interface
Defines the instance to the %SComponent.
*/
void DefineComponentInstance (in SComponent aComponent,in Object ComponentIOR) raises(LockProtection);
-
+
/*! \brief Deletion of a %SComponent
Removes a %SComponent.
*/
GenericAttribute FindOrCreateAttribute(in SObject anObject,
- in string aTypeOfAttribute) raises(LockProtection);
+ in string aTypeOfAttribute) raises(LockProtection);
/*! \brief Looking for an attribute assigned to a %SObject
*/
boolean FindAttribute(in SObject anObject,
- out GenericAttribute anAttribute,
- in string aTypeOfAttribute);
+ out GenericAttribute anAttribute,
+ in string aTypeOfAttribute);
/*! \brief Deleting the attribute assigned to the %SObject
Removes the attribute of a specific type which is assigned to the object.
<em>See \ref example17 for an example of this method usage in batchmode of %SALOME application.</em>
*/
void RemoveAttribute(in SObject anObject,
- in string aTypeOfAttribute) raises(LockProtection);
+ in string aTypeOfAttribute) raises(LockProtection);
/*!
Adds a reference between %anObject and %theReferencedObject.
\param anObject The %SObject which will get a reference
*/
void Addreference(in SObject anObject,
- in SObject theReferencedObject) ;
+ in SObject theReferencedObject) ;
/*!
Removes a reference from %anObject to another object.
/*! \brief Creation of a new command
Creates a new command which can contain several different actions.
-
+
<em>See \ref example3 for an example of this method usage in batchmode of %SALOME application.</em>
*/
/*! \brief Cancelation of the command
Cancels all actions declared within the command.
-
+
<em>See \ref example17 for an example of this method usage in batchmode of %SALOME application.</em>
*/
void AbortCommand(); // command management
void Redo() raises (LockProtection);
/*!
Returns True if at this moment there are any actions which can be canceled.
-
+
<em>See \ref example16 for an example of this method usage in batchmode of %SALOME application.</em>
*/
/*!
Shutdown the StudyManager process.
-*/
+*/
oneway void ShutdownWithExit();
/*! \brief Creation of a new study
<em>See \ref example1 for an example of this method usage in batchmode of %SALOME application.</em>
*/
boolean SaveAs(in URL aUrl, // if the file already exists
- in Study aStudy,
- in boolean theMultiFile); // overwrite (as option)
+ in Study aStudy,
+ in boolean theMultiFile); // overwrite (as option)
/*! \brief Saving the study in a specified ASCII file (or files).
Saves the study in a specified ASCII file (or files).
\param theMultiFile If this parameter is True the study will be saved in several files.
*/
boolean SaveAsASCII(in URL aUrl, // if the file already exists
- in Study aStudy,
- in boolean theMultiFile); // overwrite (as option)
+ in Study aStudy,
+ in boolean theMultiFile); // overwrite (as option)
/*! \brief List of open studies.
*/
string ConvertObjectToIOR(in Object theObject);
/*! \brief Object conversion.
-
+
Converts IOR into an object.
\return An object
*/
- Object ConvertIORToObject(in string theIOR);
+ Object ConvertIORToObject(in string theIOR);
/*!
Private method, returns an implementation of this StudyManager.
\param thePID is a process ID of the caller
\param isLocal is set True if the StudyManager is launched locally with the caller
*/
- long long GetLocalImpl(in string theHostname, in long thePID, out boolean isLocal);
-
-/*! \brief Returns the siman study based on the given study.
-
- Creates a new Siman study, or returns just a previously created.
- \return Siman study, or none if it is not siman mode
-*/
- SimanStudy GetSimanStudy();
+ long long GetLocalImpl(in string theHostname, in long thePID, out boolean isLocal);
};
The objects in the %study are built by the %StudyBuilder. The %SObject interface
provides methods for elementary inquiries, like getting an object %ID or its attribuites.
\note
-
+
<BR><VAR>Tag</VAR> of an item in %SALOME application is an integer value uniquely defining an item
in the tree-type data structure.
<BR><VAR>ID</VAR> of an item is a description of item's position in the tree-type data structure.
<em>See \ref example1 for an example of this method usage in batchmode of %SALOME application.</em>
*/
boolean FindAttribute(out GenericAttribute anAttribute,
- in string aTypeOfAttribute);
+ in string aTypeOfAttribute);
/*! Looks for a %SObject which the given %SObject refers to.
\return The object which the given %SObject refers to as well as True if it finds
string Type();
//! Get the class type
- string GetClassType();
-
+ string GetClassType();
+
//! Get SObject
SObject GetSObject();
*/
string IORToLocalPersistentID (in SObject theSObject,
- in string IORString,
- in boolean isMultiFile,
- in boolean isASCII);
+ in string IORString,
+ in boolean isMultiFile,
+ in boolean isASCII);
/*!
Transforms PersistentID into IOR of the object. It is called for each
object in the %study.
*/
string LocalPersistentIDToIOR (in SObject theSObject,
- in string aLocalPersistentID,
- in boolean isMultiFile,
- in boolean isASCII)
+ in string aLocalPersistentID,
+ in boolean isMultiFile,
+ in boolean isASCII)
raises (SALOME::SALOME_Exception);
// Publishing in the study
*/
module Engines
{
- /*!
+ /*!
A byte stream which is used for binary data transfer between different
components
*/
- typedef sequence<octet> TMPFile;
-
+ typedef sequence<octet> TMPFile;
+
//! General Key Value Structure to set or get properties, for component
struct KeyValuePair
{
any value;
};
- //! Structure data type to hold reference on data
+ //! Structure data type to hold reference on data
struct dataref
{
string ref;
};
typedef sequence<KeyValuePair> FieldsDict;
- typedef sequence<string> ListOfOptions;
- typedef sequence<string> ListOfIdentifiers;
interface EngineComponent ;
interface fileRef ;
interface fileTransfer ;
interface Salome_file;
- interface DataContainer;
- typedef sequence<DataContainer> ListOfData;
-
/*! \brief Interface of the %Container.
This interface defines the process of loading and registration
of new components in %SALOME application
\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,
+ \param studyId 0 if instance is not associated to a study,
>0 otherwise (== study id)
\return a loaded component
*/
//! 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.
+ corresponding Python module.
+ Warning: no internal registration is done, so it is up to the caller to
+ manage the various instanciation.
\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.
*/
string create_python_service_instance(in string serviceName,
out string reason);
-
+
//! Create a new servant instance of a component with environment variables specified.
/*!
Component library must be loaded.
\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,
+ \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
/*!
\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,
+ \param studyId 0 if instance is not associated to a study,
>0 otherwise (== study id)
\return the first instance found with same studyId
*/
*/
void remove_impl(in EngineComponent component_i);
- //! Unload component libraries from the container.
+ //! Unload component libraries from the container.
void finalize_removal() ;
//! Determines whether the server has been loaded or not.
//! Returns the PID of the container
long getPID();
- //! Kill the container
+ //! Kill the container
/*!
Returns True if the %container has been killed.
Kept for Superv compilation but can't work, unless oneway...
/*!
returns a fileRef object if origFileName exists and is readable
else returns null object. Only one fileRef is created for a given
- file name, so, several calls with the same file name returns the
+ file name, so, several calls with the same file name returns the
same object.
*/
fileRef createFileRef(in string origFileName);
//! Create a Salome_file
/*!
returns a Salome_file object if origFileName exists and is readable
- else returns null object.
+ else returns null object.
\param origFileName name of the file to be managed (can contain the path).
PyScriptNode getDefaultPyScriptNode();
};
- /*! \brief Interface to pass data files from the client side to the SALOME Container.
- Passes data from client side to the SALOME container (where component engine is running)
- size via the CORBA bus as a stream of bytes.
- */
-
- interface DataContainer
- {
- //! This operation returns the stream with the data file content.
- TMPFile get();
-
- //! Returns the name of the document corresponding to this data container.
- string name();
-
- //! Returns the identifier of the document corresponding to this data container.
- string identifier();
-
- //! Returns the extension (type) of the document corresponding to this data container.
- //! It is taked from the SIMAN URL.
- string extension();
-
- //! Defines the extension. It is required is extension of the file is not
- //! matched with a read extension: archived file, for example.
- void setExtension(in string extension);
- };
-
-
/*! \brief Interface of the %component.
This interface is used for interaction between the %container and the
%component and between the components inside the container.
//! Set component instance properties
/*!
- Gives a sequence of (key=string,value=any) to the component.
+ 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.
+ This map is for use by derived classes.
*/
void setProperties(in FieldsDict dico);
//! Get the cpu used
/*!
- Returns the Cpu used
+ Returns the Cpu used
*/
long CpuUsed_impl() ;
-
+
//! Get a python dump
/*!
Returns a python script, which is being played back reproduces
the data model of component
- */
+ */
TMPFile DumpPython(in Object theStudy,
in boolean isPublished,
in boolean isMultiFile,
out boolean isValidScript);
-
+
//! Returns a CORBA Ref of a input Salome_file managed by a service.
/*!
\return CORBA Ref of the requested file.
- \exception contains informations of what if the component cannot
+ \exception contains informations of what if the component cannot
sends the file's reference.
*/
- Engines::Salome_file getInputFileToService(in string service_name,
+ Engines::Salome_file getInputFileToService(in string service_name,
in string Salome_file_name) raises(SALOME::SALOME_Exception);
- //! Check service input files (transfer them if needed)
+ //! Check service input files (transfer them if needed)
/*!
This method is used before the activation of the service. It calls
- recvFiles() on all the input Salome_file files of the service.
-
+ recvFiles() on all the input Salome_file files of the service.
+
Before each recvFiles(), it uses the callback method named configureSalome_file.
This method allows the user to configure the files managed by the Salome_file.
- By default, there is no files managed when a Salome_file is created,
+ By default, there is no files managed when a Salome_file is created,
but the supervisor set some files managed by the Salome_file from the information contained
into the schema file.
\return CORBA Ref of the requested file.
- \exception contains informations of what if the component cannot
+ \exception contains informations of what if the component cannot
sends the file's reference.
*/
- Engines::Salome_file getOutputFileToService(in string service_name,
+ Engines::Salome_file getOutputFileToService(in string service_name,
in string Salome_file_name) raises(SALOME::SALOME_Exception);
- //! Check service output files (transfer them if needed)
+ //! Check service output files (transfer them if needed)
/*!
This method is used at the end of the service. It calls
- recvFiles() on all the output Salome_file files of the service.
-
+ recvFiles() on all the output Salome_file files of the service.
+
Before each recvFiles(), it uses the callback method named configureSalome_file.
This method allows the user to configure the files managed by the Salome_file.
- By default, there is no files managed when a Salome_file is created,
+ By default, there is no files managed when a Salome_file is created,
but the supervisor set some files managed by the Salome_file from the information contained
into the schema file.
component provides such information.
*/
boolean hasObjectInfo();
-
+
//! Get custom information about the given object.
/*!
This method is used to get the custom information about the given object.
Should be redefined in the certain component in case of this
component provides such information.
It is worth using this method only if hasObjectInfo() method returns true.
-
+
\param entry object's entry.
\param studyId study id
\return string containing component's version, e.g. "1.0"
*/
string getVersion();
-
- //! Generic Import operation to let the component to import data, corresponding to it.
- /*!
- \param studyId indentifier of the study where the data must be placed
- \param data data for import: usually this is just imported file content
- \param options additional options for Importat operation
- \return the sequence of identifiers of the importedData in the component (to use later in the export function)
- */
- ListOfIdentifiers importData(in long studyId, in DataContainer data, in ListOfOptions options);
-
- //! Generic Export operation to ket the component export all modified data corresponding to it.
- /*!
- \param studyId identifier of the study that contains the exported data
- */
- ListOfData getModifiedData(in long studyId);
};
/*!
//! Close the file transfer
/*!
- when the file transfer is finished, close method releases structures
+ when the file transfer is finished, close method releases structures
created by open method, identified by fileId.
*/
void close(in long fileId);
};
- //! A file managed by a Salome_file.
+ //! A file managed by a Salome_file.
struct file {
//! file name
string file_name;
//! path name
- string path;
+ string path;
string type;
string source_file_name;
//! status ("present" or "notpresent")
- string status;
+ string status;
long node;
Engines::Container container;
};
typedef sequence<Engines::file> files;
- //! The state of a Salome_file.
+ //! The state of a Salome_file.
struct SfState {
//! file name
- string name;
+ string name;
//! hdf5 file where the file can be saved
- string hdf5_file_name;
+ string hdf5_file_name;
//! number of files managed
- long number_of_files;
+ long number_of_files;
//! information if all the files are received
- boolean files_ok;
+ boolean files_ok;
};
*/
void save(in string hdf5_file) raises (SALOME::SALOME_Exception);
- //! Save a Salome_file into a hdf5_file.
+ //! Save a Salome_file into a hdf5_file.
/*!
All files that are managed are saved into the hdf5_file
*/
void connectDistributedFile(in string file_name,
in Engines::Salome_file source_Salome_file) raises (SALOME::SALOME_Exception);
-
+
//! Connect the file_name with a Distributed file_name.
/*!
machine (refMachine).
It is created by a container (factoryServer) on refMachine,
with createFileRef(in string origFileName) method.
- The fileRef object maintains a list of (machine,filename) for copies.
+ 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.
If there is no copy on myMachine, method getFileTransfer() from container
+++ /dev/null
-# Copyright (C) 2013-2015 CEA/DEN, EDF R&D, OPEN CASCADE
-#
-# 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, or (at your option) any later version.
-#
-# 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.salome-platform.org/ or email : webmaster.salome@opencascade.com
-#
-# Author: Vadim SANDLER
-#
-
-# SimanIO detection dor Salome
-#
-# !! Please read the generic detection procedure in SalomeMacros.cmake !!
-#
-
-SALOME_FIND_PACKAGE_AND_DETECT_CONFLICTS(SimanIO SIMANIO_INCLUDE_DIRS 1)
-#MARK_AS_ADVANCED()
-
-IF(SIMANIO_FOUND)
- SALOME_ACCUMULATE_HEADERS(SIMANIO_INCLUDE_DIRS)
- SALOME_ACCUMULATE_ENVIRONMENT(LD_LIBRARY_PATH ${SIMANIO_LIBRARIES})
-ENDIF()
+++ /dev/null
-# - Find SimanIO installation
-#
-# The following variable are set:
-# SIMANIO_FOUND - TRUE if SimanIO installation has been found
-# SIMANIO_INCLUDE_DIRS - SimanIO headers path
-# SIMANIO_LIBRARIES - SimanIO libraries
-#
-# The CMake (or environment) variable SIMANIO_ROOT_DIR can be set to
-# guide the detection and indicate a root directory to look into.
-#
-############################################################################
-# Copyright (C) 2012-2015 CEA/DEN, EDF R&D, OPEN CASCADE
-#
-# 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, or (at your option) any later version.
-#
-# 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.salome-platform.org/ or email : webmaster.salome@opencascade.com
-#
-
-# ------
-
-IF(NOT SIMANIO_FIND_QUIETLY)
- MESSAGE(STATUS "Check for SimanIO ...")
-ENDIF()
-
-# ------
-
-SET(SIMANIO_ROOT_DIR $ENV{SIMANIO_ROOT_DIR} CACHE PATH "Path to the SimanIO.")
-IF(SIMANIO_ROOT_DIR)
- LIST(APPEND CMAKE_PREFIX_PATH "${SIMANIO_ROOT_DIR}")
-ENDIF()
-
-FIND_PATH(SIMANIO_INCLUDE_DIRS SimanIO_Link.hxx)
-FIND_LIBRARY(SIMANIO_LIBRARIES NAMES SimanIO)
-
-INCLUDE(FindPackageHandleStandardArgs)
-FIND_PACKAGE_HANDLE_STANDARD_ARGS(SimanIO REQUIRED_VARS SIMANIO_INCLUDE_DIRS SIMANIO_LIBRARIES)
-
-IF(SIMANIO_FOUND)
- IF(NOT SIMANIO_FIND_QUIETLY)
- MESSAGE(STATUS "SimanIO library: ${SIMANIO_LIBRARIES}")
- ENDIF()
-ENDIF()
+++ /dev/null
-dnl Copyright (C) 2007-2015 CEA/DEN, EDF R&D, OPEN CASCADE
-dnl
-dnl Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-dnl CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
-dnl
-dnl This library is free software; you can redistribute it and/or
-dnl modify it under the terms of the GNU Lesser General Public
-dnl License as published by the Free Software Foundation; either
-dnl version 2.1 of the License, or (at your option) any later version.
-dnl
-dnl This library is distributed in the hope that it will be useful,
-dnl but WITHOUT ANY WARRANTY; without even the implied warranty of
-dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-dnl Lesser General Public License for more details.
-dnl
-dnl You should have received a copy of the GNU Lesser General Public
-dnl License along with this library; if not, write to the Free Software
-dnl Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-dnl
-dnl See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
-dnl
-
-AC_DEFUN([CHECK_SIMANIO],[
-
-SIMANIO_CPPFLAGS=""
-SIMANIO_LIBS=""
-
-AC_CHECKING(for SimanIO location)
-AC_ARG_WITH(simanio,
- [AC_HELP_STRING([--with-simanio=DIR],[root directory path to SimanIO installation])],
- [SIMANIODIR="$withval"
- AC_MSG_RESULT("select $withval as path to SimanIO installation")
- ])
-
-if test "x$SIMANIODIR" = "x" ; then
- # no --with-simanio option used
- if test "x$SIMANIO_ROOT_DIR" != "x" ; then
- # SIMANIO_ROOT_DIR environment variable defined
- SIMANIODIR=$SIMANIO_ROOT_DIR
- fi
-fi
-
-AC_MSG_RESULT(\$SIMANIODIR = ${SIMANIODIR})
-
-CPPFLAGS_old="${CPPFLAGS}"
-LIBS_old=$LIBS
-
-LIB_SUFFIX="${LIB_LOCATION_SUFFIX}"
-
-if test "x${SIMANIODIR}" != "x" ; then
- SIMANIO_CPPFLAGS="-I${SIMANIODIR}/include"
- SIMANIO_LIBS="-L${SIMANIODIR}/lib"
-fi
-
-if test "x${SIMANIODIR}" = "x/usr" ; then
- SIMANIO_CPPFLAGS=""
- SIMANIO_LIBS=""
-fi
-
-simanio_ok=no
-simanio_headers_ok=no
-simanio_binaries_ok=no
-
-dnl SIMANIO headers
-#AC_CHECKING(for SimanIO headers)
-
-simanio_headers_ok=yes
-if test "x${SIMANIODIR}" != "x" ; then
- AC_CHECK_FILE(${SIMANIODIR}/include/SimanIO_Link.hxx,
- simanio_headers_ok=yes,
- simanio_headers_ok=no)
-fi
-
-if test "x${simanio_headers_ok}" = "xno" ; then
- SIMANIO_CPPFLAGS="SIMANIO_CPPFLAGS_NOT_DEFINED"
-else
- #AC_MSG_RESULT(\$SIMANIO_CPPFLAGS = ${SIMANIO_CPPFLAGS})
- AC_CHECK_FILE(${SIMANIODIR}/lib/libSimanIO.so,
- simanio_lib_ok=yes,
- simanio_lib_ok=no)
-fi
-#AC_MSG_RESULT(for SimanIO libraries: $simanio_lib_ok)
-
-if test "x${simanio_headers_ok}" = "xyes" ; then
- if test "x${simanio_lib_ok}" = "xyes" ; then
- SIMANIO_LIBS="-L${SIMANIODIR}/lib -lSimanIO"
- simanio_ok=yes
- fi
-fi
-
-AC_MSG_RESULT(for simanio: $simanio_ok)
-
-AC_SUBST(SIMANIO_CPPFLAGS)
-AC_SUBST(SIMANIO_LIBS)
-
-])dnl
SALOME_ComponentPy.py
SALOME_PyNode.py
SALOME_Container.py
- SALOME_DataContainerPy.py
)
ADD_DEFINITIONS(${HDF5_DEFINITIONS} ${OMNIORB_DEFINITIONS})
SET(SalomeContainer_SOURCES
Component_i.cxx
Container_i.cxx
- SALOME_DataContainer_i.cxx
SALOME_FileTransfer_i.cxx
SALOME_FileRef_i.cxx
Container_init_python.cxx
*/
//=============================================================================
-/*!
+/*!
* Default constructor, not for use
*/
//=============================================================================
//=============================================================================
Engines_Component_i::Engines_Component_i(CORBA::ORB_ptr orb,
- PortableServer::POA_ptr poa,
- PortableServer::ObjectId * contId,
+ PortableServer::POA_ptr poa,
+ PortableServer::ObjectId * contId,
const char *instanceName,
const char *interfaceName,
bool notif,
//=============================================================================
-/*!
+/*!
* Destructor: call Container for decrement of instances count.
* When instances count falls to 0, the container tries to remove the
* component library (dlclose)
}
//=============================================================================
-/*!
+/*!
* CORBA method: return name of the instance, unique in this Container
*/
//=============================================================================
}
//=============================================================================
-/*!
+/*!
* CORBA method: return name of the component class
*/
//=============================================================================
}
//=============================================================================
-/*!
+/*!
* CORBA method: Get study Id
* \return -1: not initialised (Internal Error)
* 0: multistudy component instance
}
//=============================================================================
-/*!
+/*!
* CORBA method: Test if instance is alive and responds
*/
//=============================================================================
}
//=============================================================================
-/*!
+/*!
* CORBA method: Deactivate this instance. CORBA object is deactivated (do not
* respond any more to CORBA calls), the connection to Regsitry is removed
* (Registry informed of deactivation), internal server reference counter on
}
//=============================================================================
-/*!
+/*!
* CORBA method: return CORBA reference of the Container
*
*/
}
//=============================================================================
-/*!
- * CORBA method:
- * Gives a sequence of (key=string,value=any) to the component.
+/*!
+ * CORBA method:
+ * 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.
+ * This map is for use by derived classes.
* \param dico sequence of (key=string,value=any)
*/
//=============================================================================
}
//=============================================================================
-/*!
- * CORBA method:
+/*!
+ * CORBA method:
* returns a previously stored map (key=string,value=any) as a sequence.
* (see setProperties)
*/
}
//=============================================================================
-/*!
- * CORBA method:
+/*!
+ * CORBA method:
* This method is to set an option specific to a certain EngineComponent.
*/
//=============================================================================
}
//=============================================================================
-/*!
- * CORBA method:
+/*!
+ * CORBA method:
* This method is to get value of an option specific to a certain EngineComponent.
*/
//=============================================================================
}
//=============================================================================
-/*!
+/*!
* CORBA method: used by Supervision to give names to this instance
*/
//=============================================================================
}
//=============================================================================
-/*!
+/*!
* CORBA method: used in Supervision
*/
//=============================================================================
-bool Engines_Component_i::Kill_impl()
+bool Engines_Component_i::Kill_impl()
{
// MESSAGE("Engines_Component_i::Kill_i() pthread_t "<< pthread_self()
// << " pid " << getpid() << " instanceName "
}
//=============================================================================
-/*!
+/*!
* CORBA method: used in Supervision
*/
//=============================================================================
<< " machineName " << Kernel_Utils::GetHostname().c_str()<< " _id " << std::hex << _id
<< std::dec << " _ThreadId " << _ThreadId );
#endif
-
+
bool RetVal = false ;
#ifndef WIN32
}
//=============================================================================
-/*!
+/*!
* CORBA method: used in Supervision
*/
//=============================================================================
{
return false ;
}
- else
+ else
{
#ifndef WIN32
RetVal = Killer( _ThreadId ,SIGINT ) ;
}
//=============================================================================
-/*!
+/*!
* CORBA method: used in Supervision
*/
//=============================================================================
if ( _ThreadId > 0 && pthread_self().p != _ThreadId->p )
#endif
{
- if ( _Sleeping )
+ if ( _Sleeping )
{
_Sleeping = false ;
RetVal = true ;
}
//=============================================================================
-/*!
- * CORBA method:
+/*!
+ * CORBA method:
*/
//=============================================================================
// << _serviceName << " " << cpu << endl ;
}
}
- else
+ else
{
cpu = _ThreadCpuUsed ;
// cout << pthread_self() << " Engines_Component_i::CpuUsed_impl "
//=============================================================================
-/*!
+/*!
* C++ method: return Container Servant
*/
//=============================================================================
}
//=============================================================================
-/*!
+/*!
* C++ method: set study Id
- * \param studyId 0 if instance is not associated to a study,
+ * \param studyId 0 if instance is not associated to a study,
* >0 otherwise (== study id)
* \return true if the set of study Id is OK
* must be set once by Container, at instance creation,
{
ASSERT( studyId >= 0);
CORBA::Boolean ret = false;
- if (_studyId < 0) // --- not yet initialized
+ if (_studyId < 0) // --- not yet initialized
{
_studyId = studyId;
ret = true;
}
//=============================================================================
-/*!
+/*!
* C++ method: return CORBA instance id, the id is set in derived class
* constructor, when instance is activated.
*/
}
//=============================================================================
-/*!
+/*!
* C++ method: used by derived classes for supervision
*/
//=============================================================================
}
//=============================================================================
-/*!
+/*!
* C++ method: used by derived classes for supervision
*/
//=============================================================================
}
//=============================================================================
-/*!
+/*!
* C++ method: -- CHECK IF USED --
*/
//=============================================================================
}
//=============================================================================
-/*!
+/*!
* C++ method: -- CHECK IF USED --
*/
//=============================================================================
}
//=============================================================================
-/*!
+/*!
* C++ method: used in Supervision (see kill_impl)
*/
//=============================================================================
perror("Killer pthread_kill error") ;
return false ;
}
- else
+ else
{
#ifdef WIN32
MESSAGE("Killer : ThreadId " << ThreadId.p << " pthread_killed(" << signum << ")") ;
void CallCancelThread();
//=============================================================================
-/*!
+/*!
* C++ method:
- */
+ */
//=============================================================================
void SetCpuUsed()
}
//=============================================================================
-/*!
+/*!
* C++ method:
*/
//=============================================================================
void Engines_Component_i::SetCurCpu()
{
_ThreadCpuUsed = CpuUsed() ;
- // MESSAGE(pthread_self() <<
+ // MESSAGE(pthread_self() <<
// " Engines_Component_i::SetCurCpu() _ThreadCpuUsed " << _ThreadCpuUsed) ;
}
//=============================================================================
-/*!
+/*!
* C++ method:
*/
//=============================================================================
else
{
// std::cout << pthread_self() << "Engines_Component_i::CpuUsed _ThreadId "
- // << _ThreadId << " " << _serviceName<< " _StartUsed "
+ // << _ThreadId << " " << _serviceName<< " _StartUsed "
// << _StartUsed << std::endl ;
}
-#else
+#else
// NOT implementet yet
#endif
}
//=============================================================================
-/*!
+/*!
* C++ method: Send message to event channel
*/
//=============================================================================
}
//=============================================================================
-/*!
+/*!
* C++ method: return standard library name built on component name
*/
//=============================================================================
#else
std::string ret=componentName;
ret+="Engine.dll";
-#endif
+#endif
return ret;
}
//=============================================================================
-/*!
+/*!
* C++ method: DumpPython default implementation
*/
//=============================================================================
-Engines::TMPFile* Engines_Component_i::DumpPython(CORBA::Object_ptr theStudy,
- CORBA::Boolean isPublished,
- CORBA::Boolean isMultiFile,
+Engines::TMPFile* Engines_Component_i::DumpPython(CORBA::Object_ptr theStudy,
+ CORBA::Boolean isPublished,
+ CORBA::Boolean isMultiFile,
CORBA::Boolean& isValidScript)
{
const char* aScript = isMultiFile ? "def RebuildData(theStudy): pass" : "";
strcpy(aBuffer, aScript);
CORBA::Octet* anOctetBuf = (CORBA::Octet*)aBuffer;
int aBufferSize = strlen(aBuffer)+1;
- Engines::TMPFile_var aStreamFile = new Engines::TMPFile(aBufferSize, aBufferSize, anOctetBuf, 1);
+ Engines::TMPFile_var aStreamFile = new Engines::TMPFile(aBufferSize, aBufferSize, anOctetBuf, 1);
isValidScript = true;
- return aStreamFile._retn();
+ return aStreamFile._retn();
}
-Engines::Salome_file_ptr
-Engines_Component_i::getInputFileToService(const char* service_name,
- const char* Salome_file_name)
+Engines::Salome_file_ptr
+Engines_Component_i::getInputFileToService(const char* service_name,
+ const char* Salome_file_name)
{
// Try to find the service, if it doesn't exist, we throw an exception.
_Service_file_map_it = _Input_Service_file_map.find(service_name);
return Sfile->_this();
}
-Engines::Salome_file_ptr
-Engines_Component_i::setInputFileToService(const char* service_name,
- const char* Salome_file_name)
+Engines::Salome_file_ptr
+Engines_Component_i::setInputFileToService(const char* service_name,
+ const char* Salome_file_name)
{
// Try to find the service, if it doesn't exist, we add it.
_Service_file_map_it = _Input_Service_file_map.find(service_name);
_Input_Service_file_map[service_name] = _map;
}
_t_Salome_file_map * _map = _Input_Service_file_map[service_name];
-
+
// Try to find the Salome_file ...
_Salome_file_map_it = _map->find(Salome_file_name);
if (_Salome_file_map_it == _map->end()) {
return Sfile->_this();
}
-void
-Engines_Component_i::checkInputFilesToService(const char* service_name)
+void
+Engines_Component_i::checkInputFilesToService(const char* service_name)
{
// Try to find the service, if it doesn't exist, nothing to do.
_Service_file_map_it = _Input_Service_file_map.find(service_name);
}
}
-Engines::Salome_file_ptr
-Engines_Component_i::getOutputFileToService(const char* service_name,
- const char* Salome_file_name)
+Engines::Salome_file_ptr
+Engines_Component_i::getOutputFileToService(const char* service_name,
+ const char* Salome_file_name)
{
// Try to find the service, if it doesn't exist, we throw an exception.
_Service_file_map_it = _Output_Service_file_map.find(service_name);
return Sfile->_this();
}
-Engines::Salome_file_ptr
-Engines_Component_i::setOutputFileToService(const char* service_name,
- const char* Salome_file_name)
+Engines::Salome_file_ptr
+Engines_Component_i::setOutputFileToService(const char* service_name,
+ const char* Salome_file_name)
{
// Try to find the service, if it doesn't exist, we add it.
_Service_file_map_it = _Output_Service_file_map.find(service_name);
_Output_Service_file_map[service_name] = _map;
}
_t_Salome_file_map * _map = _Output_Service_file_map[service_name];
-
+
// Try to find the Salome_file ...
_Salome_file_map_it = _map->find(Salome_file_name);
if (_Salome_file_map_it == _map->end()) {
return Sfile->_this();
}
-void
-Engines_Component_i::checkOutputFilesToService(const char* service_name)
+void
+Engines_Component_i::checkOutputFilesToService(const char* service_name)
{
// Try to find the service, if it doesn't exist, nothing to do.
_Service_file_map_it = _Output_Service_file_map.find(service_name);
}
//=============================================================================
-/*!
+/*!
* C++ method: used to configure the Salome_file into the runtime.
* \param service_name name of the service that use this Salome_file
* \param file_port_name name of the Salome_file
void
Engines_Component_i::configureSalome_file(std::string service_name,
std::string file_port_name,
- Salome_file_i * file)
+ Salome_file_i * file)
{
// By default this method does nothing
}
//=============================================================================
-/*!
- * C++ method: allows to import data file into the Component internal data
- structure (like import operation of BRep file in GEOM module).
- * \param studyId identifier of the working study
- * \param data container of the file content
- * \param options additional options for import (if needed)
- */
-//=============================================================================
-Engines::ListOfIdentifiers* Engines_Component_i::importData(CORBA::Long studyId,
- Engines::DataContainer_ptr data,
- const Engines::ListOfOptions& options)
-{
- // By default this method does nothing
- Engines::ListOfIdentifiers_var aList = new Engines::ListOfIdentifiers;
- return aList._retn();
-}
-
-//=============================================================================
-/*!
- * C++ method: allows to export data files from the Component internal data
- structure (like Export operation of Step file in GEOM module).
- * \param studyId identifier of the working study
- */
-//=============================================================================
-Engines::ListOfData* Engines_Component_i::getModifiedData(CORBA::Long studyId)
-{
- // By default this method does nothing
- Engines::ListOfData_var aList = new Engines::ListOfData;
- return aList._retn();
-}
-
-//=============================================================================
-/*!
+/*!
* C++ method: return the name of the container associated with this component
* This name does not contains the "/Containers" string and all "/" are replaced by "_"
* \return the container name (reformatted)
return _containerName;
}
//=============================================================================
-/*!
+/*!
* C++ method: set the name of the container associated with this component (attribute _containerName)
* This name does not contains the "/Containers" string and all "/" are replaced by "_"
* \return the container name (reformatted)
\note The version of the component is stored to the study, as a part of general persistence
mechanism; once stored, version information in the study cannot be changed.
-
+
\return string containing component's version, e.g. "1.0"
*/
char* Engines_Component_i::getVersion()
## define an implementation of the component interface Engines::Component
#
-#
+#
class SALOME_ComponentPy_i (Engines__POA.EngineComponent):
_orb = None
_poa = None
_fieldsDict = []
_studyId = -1
-
+
#-------------------------------------------------------------------------
def __init__ (self, orb, poa, contID, containerName,
def _get_instanceName(self):
MESSAGE( "SALOME_ComponentPy_i::_get_instanceName" )
return self._instanceName
-
+
#-------------------------------------------------------------------------
def _get_interfaceName(self):
def ping(self):
MESSAGE( "SALOME_ComponentPy_i::ping() pid " + str(os.getpid()) )
-
+
#-------------------------------------------------------------------------
def setProperties(self, dico):
self._fieldsDict = dico
-
+
#-------------------------------------------------------------------------
def getProperties(self):
id = self._poa.servant_to_id(self)
self._poa.deactivate_object(id)
return
-
+
#-------------------------------------------------------------------------
def GetContainerRef(self):
MESSAGE( "SALOME_ComponentPy_i::GetContainerRef" )
return self._contId._narrow(Engines.Container)
-
+
#-------------------------------------------------------------------------
def beginService(self , serviceName ):
value=any.from_any(e.value)
if isinstance(value,str):
os.environ[key]=value
-
+
#-------------------------------------------------------------------------
MESSAGE( "SALOME_ComponentPy_i::Names" + str(GraphName) + str(NodeName) )
self._graphName = GraphName
self._nodeName = NodeName
-
+
#-------------------------------------------------------------------------
def graphName(self):
# return 0
#else:
# MESSAGE()
- return 1
-
+ return 1
+
#-------------------------------------------------------------------------
def Kill_impl(self):
return 0
#-------------------------------------------------------------------------
-
+
def DumpPython(self, theStudy, isPublished, isMultiFile):
aBuffer = "\0"
if isMultiFile :
aBuffer = "def RebuildData(theStudy): pass\n\0"
return (aBuffer, 1)
- #-------------------------------------------------------------------------
+ #-------------------------------------------------------------------------
def getStudyId(self):
return self._studyId
- #-------------------------------------------------------------------------
+ #-------------------------------------------------------------------------
def hasObjectInfo(self):
return 0
- #-------------------------------------------------------------------------
+ #-------------------------------------------------------------------------
def getObjectInfo(self, studyId, entry):
return ""
- #-------------------------------------------------------------------------
+ #-------------------------------------------------------------------------
def getVersion(self):
return "" # empty string means "unknown" version
- #-------------------------------------------------------------------------
-
- def importData(self, studyId, dataContainer, options):
- return [] # no implementation by default
-
- #-------------------------------------------------------------------------
-
- def getModifiedData(self, studyId):
- return [] # no implementation by default
+ #-------------------------------------------------------------------------
pass # end of SALOME_ComponentPy_i
class RegistryConnexion;
class Engines_Container_i;
-class CONTAINER_EXPORT Engines_Component_i:
+class CONTAINER_EXPORT Engines_Component_i:
public virtual POA_Engines::EngineComponent,
public virtual PortableServer::ServantBase
{
Engines_Component_i();
Engines_Component_i(CORBA::ORB_ptr orb,
PortableServer::POA_ptr poa,
- PortableServer::ObjectId * contId,
- const char *instanceName,
+ PortableServer::ObjectId * contId,
+ const char *instanceName,
const char *interfaceName,
bool notif = false,
bool regist = true);
//Constructor for standalone component
Engines_Component_i(CORBA::ORB_ptr orb,
PortableServer::POA_ptr poa,
- Engines::Container_ptr container,
- const char *instanceName,
+ Engines::Container_ptr container,
+ const char *instanceName,
const char *interfaceName,
bool notif = false,
bool regist = true);
CORBA::Boolean& isValidScript);
// CORBA operations for Salome_file
- virtual Engines::Salome_file_ptr getInputFileToService(const char* service_name,
+ virtual Engines::Salome_file_ptr getInputFileToService(const char* service_name,
const char* Salome_file_name);
- virtual Engines::Salome_file_ptr getOutputFileToService(const char* service_name,
+ virtual Engines::Salome_file_ptr getOutputFileToService(const char* service_name,
const char* Salome_file_name);
virtual void checkInputFilesToService(const char* service_name);
- virtual Engines::Salome_file_ptr setInputFileToService(const char* service_name,
+ virtual Engines::Salome_file_ptr setInputFileToService(const char* service_name,
const char* Salome_file_name);
virtual void checkOutputFilesToService(const char* service_name);
- virtual Engines::Salome_file_ptr setOutputFileToService(const char* service_name,
+ virtual Engines::Salome_file_ptr setOutputFileToService(const char* service_name,
const char* Salome_file_name);
// Object information
virtual bool hasObjectInfo() { return false; }
virtual char* getObjectInfo(CORBA::Long studyId, const char* entry) { return CORBA::string_dup(""); }
-
+
// Version information
virtual char* getVersion();
-
+
// --- local C++ methods
- PortableServer::ObjectId * getId();
+ PortableServer::ObjectId * getId();
Engines_Container_i *GetContainerPtr();
std::string getContainerName();
void setContainerName();
std::string file_port_name,
Salome_file_i * file);
- virtual Engines::ListOfIdentifiers* importData(CORBA::Long studyId,
- Engines::DataContainer_ptr data,
- const Engines::ListOfOptions& options);
- virtual Engines::ListOfData* getModifiedData(CORBA::Long studyId);
-
protected:
int _studyId; // -1: not initialised; 0: multiStudy; >0: study
static bool _isMultiStudy;
typedef std::map<std::string, Salome_file_i*> _t_Salome_file_map;
// Map Service_name to _Salome_file_map
typedef std::map<std::string, Engines_Component_i::_t_Salome_file_map*> _t_Service_file_map;
-
+
_t_Service_file_map _Input_Service_file_map;
_t_Service_file_map _Output_Service_file_map;
_t_Service_file_map::iterator _Service_file_map_it;
+++ /dev/null
-#! /usr/bin/env python
-# -*- coding: iso-8859-1 -*-
-# Copyright (C) 2007-2015 CEA/DEN, EDF R&D, OPEN CASCADE
-#
-# Copyright (C) 2003-2007 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, or (at your option) any later version.
-#
-# 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.salome-platform.org/ or email : webmaster.salome@opencascade.com
-#
-
-# SALOME DataContainer : implementation of data container
-# File : SALOME_DataContainerPy.py
-# Author : Mikhail PONIKARIOV
-# Module : SALOME
-# $Header$
-#
-import os
-import sys
-import string
-
-from omniORB import CORBA, PortableServer
-import Engines, Engines__POA
-from SALOME_ComponentPy import *
-
-#=============================================================================
-
-#define an implementation of the data container interface for the data transfer implemented in Python
-
-class SALOME_DataContainerPy_i (Engines__POA.DataContainer):
- _url = ""
- _name = ""
- _identifier = ""
- _ext = -1
- _removeAfterGet = True;
-
- #-------------------------------------------------------------------------
-
- def __init__(self, urlorstream, name, identifier, removeAfterGet, isStream = False):
- self._urlorstream = urlorstream
- self._name = name
- self._identifier = identifier
- self._removeAfterGet = removeAfterGet
- self._isStream = isStream
- if isStream:
- self._ext = ""
- else:
- self._ext = urlorstream[urlorstream.rfind(".") + 1 : ]
-
- #-------------------------------------------------------------------------
-
- def get(self):
- if self._isStream:
- return self._urlorstream
-
- f = open(self._urlorstream, 'r')
- stream = f.read()
- f.close()
- if self._removeAfterGet:
- os.remove(self._urlorstream)
- try: # try to remove directory if it is empty
- index = max(self._urlorstream.rfind("\\"), self._url.rfind("/"))
- if index > 0:
- os.rmdir(self._urlorstream[:index])
- except:
- pass
- return stream
-
- #-------------------------------------------------------------------------
-
- def name(self):
- return self._name
-
- #-------------------------------------------------------------------------
-
- def identifier(self):
- return self._identifier
-
- def extension(self):
- return self._ext
-
- def setExtension(self, ext):
- self._ext = ext
+++ /dev/null
-// Copyright (C) 2007-2015 CEA/DEN, EDF R&D, OPEN CASCADE
-//
-// Copyright (C) 2003-2007 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, or (at your option) any later version.
-//
-// 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.salome-platform.org/ or email : webmaster.salome@opencascade.com
-//
-
-// SALOME DataContainer : implementation of data container
-// File : SALOME_DataContainer_i.cxx
-// Author : Mikhail PONIKAROV
-// Module : SALOME
-// $Header$
-//
-
-#include "SALOME_DataContainer_i.hxx"
-
-#include <fstream>
-#include <iostream>
-#ifndef WIN32
-#include <unistd.h>
-#endif
-using namespace std;
-
-Engines_DataContainer_i::Engines_DataContainer_i()
-{
-}
-
-Engines_DataContainer_i::Engines_DataContainer_i(const char* url,
- const char* name, const char* identifier, const bool removeAfterGet)
- : myName(name), myIdentifier(identifier), myURL(url), myRemoveAfterGet(removeAfterGet),
- myStream(0)
-{
- std::string anExtension(url);
- if (anExtension.rfind(".") != std::string::npos) { // keep only extension
- myExt = anExtension.substr(anExtension.rfind(".") + 1);
- } else myExt = "";
-}
-
-Engines_DataContainer_i::Engines_DataContainer_i(char* stream,
- const int streamSize, const char* name, const char* identifier, const bool removeAfterGet)
- : myName(name), myIdentifier(identifier), myRemoveAfterGet(removeAfterGet),
- myStream(stream), myStreamSize(streamSize), myExt("")
-{
-}
-
-Engines_DataContainer_i::~Engines_DataContainer_i()
-{
-}
-
-Engines::TMPFile* Engines_DataContainer_i::get()
-{
- char* aBuffer = NULL;
- int aFileSize = 0;
- if (myStream) { // send from stream
- aBuffer = myStream;
- aFileSize = myStreamSize;
- } else { // send from file
- // open file to make stream from its content
-#ifdef WIN32
- ifstream aFile(myURL.c_str(), std::ios::binary);
-#else
- ifstream aFile(myURL.c_str());
-#endif
- if (!aFile.good()) {
- std::cerr<<"File "<<myURL.c_str()<<" can not be opened for reading"<<std::endl;
- } else {
- aFile.seekg(0, std::ios::end);
- aFileSize = aFile.tellg();
- aBuffer = new char[aFileSize];
-
- aFile.seekg(0, std::ios::beg);
- aFile.read(aBuffer, aFileSize);
- aFile.close();
-
- // remove file after it converted to a stream
- // also remove directory of the file if it is empty
- if (myRemoveAfterGet) {
- string aDirName = myURL.substr(0, myURL.find_last_of("/\\"));
-#ifdef WIN32
- DeleteFile(myURL.c_str());
- RemoveDirectory(aDirName.c_str());
-#else
- unlink(myURL.c_str());
- rmdir(aDirName.c_str());
-#endif
- }
- }
- }
-
- // make CORBA TMP file from the buffer
- CORBA::Octet* anOctetBuf = (CORBA::Octet*)aBuffer;
- Engines::TMPFile_var aStreamFile = new Engines::TMPFile(aFileSize, aFileSize, anOctetBuf, 1);
-
- if (myStream && myRemoveAfterGet)
- delete [] myStream;
-
- return aStreamFile._retn();
-}
-
-char* Engines_DataContainer_i::name()
-{
- return CORBA::string_dup(myName.c_str());
-}
-
-char* Engines_DataContainer_i::identifier()
-{
- return CORBA::string_dup(myIdentifier.c_str());
-}
-
-char* Engines_DataContainer_i::extension()
-{
- return CORBA::string_dup(myExt.c_str());
-}
-
-void Engines_DataContainer_i::setExtension(const char* theExt)
-{
- myExt = theExt;
-}
+++ /dev/null
-// Copyright (C) 2007-2015 CEA/DEN, EDF R&D, OPEN CASCADE
-//
-// Copyright (C) 2003-2007 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, or (at your option) any later version.
-//
-// 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.salome-platform.org/ or email : webmaster.salome@opencascade.com
-//
-
-// SALOME DataContainer : implementation of data container
-// File : SALOME_DataContainer_i.hxx
-// Author : Mikhail PONIKAROV
-// Module : SALOME
-// $Header$
-//
-#ifndef _SALOME_DATACONTAINER_I_HXX_
-#define _SALOME_DATACONTAINER_I_HXX_
-
-#include "SALOME_Container.hxx"
-
-#include <SALOMEconfig.h>
-#include CORBA_SERVER_HEADER(SALOME_Component)
-
-#include <string>
-
-class CONTAINER_EXPORT Engines_DataContainer_i:
- public POA_Engines::DataContainer
-{
-public:
- Engines_DataContainer_i();
- Engines_DataContainer_i(const char* url,
- const char* name,
- const char* identifier,
- const bool removeAfterGet);
-
- Engines_DataContainer_i(char* stream,
- const int streamSize,
- const char* name,
- const char* identifier,
- const bool removeAfterGet);
- virtual ~Engines_DataContainer_i();
-
- // --- CORBA methods
- virtual Engines::TMPFile* get();
- virtual char* name();
- virtual char* identifier();
- virtual char* extension();
- virtual void setExtension(const char* theExt);
-
-protected:
-
- std::string myExt; ///< extension (type) of the file
- std::string myName; ///< name of the document corresponding to this data
- std::string myIdentifier; ///< module identifier of the document corresponding to this data
- std::string myURL; ///< path to the locally located file
- bool myRemoveAfterGet; ///< if this flag is true, file must be removed after the first "get" method call
- char* myStream; ///< if it is not NULL, data must be get from this stream, not from the file
- int myStreamSize; ///< size (in bytes) if the stream in myStream
-};
-
-#endif
${OMNIORB_INCLUDE_DIR}
${HDF5_INCLUDE_DIRS}
${Boost_INCLUDE_DIR}
- ${SIMANIO_INCLUDE_DIRS}
${PROJECT_BINARY_DIR}/salome_adm
${CMAKE_CURRENT_SOURCE_DIR}/../HDFPersist
${CMAKE_CURRENT_SOURCE_DIR}/../Basics
SalomeLifeCycleCORBA
SalomeIDLKernel
${HDF5_C_LIBRARIES}
- ${SIMANIO_LIBRARIES}
)
SET(SalomeDS_SOURCES
SALOMEDS_UseCaseIterator_i.cxx
SALOMEDS_ChildIterator_i.cxx
SALOMEDS_SComponentIterator_i.cxx
- SALOMEDS_SimanStudy_i.cxx
- SALOMEDS_SimanStudy.cxx
SALOMEDS_Study_i.cxx
SALOMEDS_StudyBuilder_i.cxx
SALOMEDS_SObject_i.cxx
TARGET_LINK_LIBRARIES(SALOMEDS_Client SalomeDS SALOMEBasics ${COMMON_LIBS} ${OMNIORB_LIBRARIES})
INSTALL(TARGETS SALOMEDS_Server SALOMEDS_Client
- EXPORT ${PROJECT_NAME}TargetGroup
+ EXPORT ${PROJECT_NAME}TargetGroup
DESTINATION ${SALOME_INSTALL_BINS})
# Executable scripts to be installed
SALOME_INSTALL_SCRIPTS(SALOME_DriverPy.py ${SALOME_INSTALL_SCRIPT_PYTHON})
-SET(COMMON_HEADERS_HXX
+SET(COMMON_HEADERS_HXX
SALOMEDS_StudyManager_i.hxx
SALOMEDS_Driver_i.hxx
SALOMEDS_StudyManager.hxx
SALOMEDS_Defines.hxx
SALOMEDS_wrap.hxx
SALOMEDS_Attributes_wrap.hxx
- SALOMEDS_SimanStudy.hxx
- SALOMEDS_SimanStudy_i.hxx
)
INSTALL(FILES ${COMMON_HEADERS_HXX} DESTINATION ${SALOME_INSTALL_HEADERS})
+++ /dev/null
-// Copyright (C) 2007-2015 CEA/DEN, EDF R&D, OPEN CASCADE
-//
-// Copyright (C) 2003-2007 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, or (at your option) any later version.
-//
-// 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.salome-platform.org/ or email : webmaster.salome@opencascade.com
-//
-
-// File : SALOMEDS_SimanStudy.cxx
-// Author : Mikhail PONIKAROV
-// Module : SALOME
-//
-#include "utilities.h"
-
-#include "SALOMEDS_SimanStudy.hxx"
-
-#include "SALOMEDS.hxx"
-#include "SALOMEDS_Study.hxx"
-
-#include "SALOMEDSImpl_Study.hxx"
-
-#include "SALOMEDS_SimanStudy_i.hxx"
-
-#include "Basics_Utils.hxx"
-
-#include "Utils_ORB_INIT.hxx"
-#include "Utils_SINGLETON.hxx"
-
-/*
-SALOMEDS_SimanStudy::SALOMEDS_SimanStudy(SALOMEDSImpl_SimanStudy* theStudy)
-{
- _isLocal = true;
- _local_impl = theStudy;
- _corba_impl = SALOMEDS::SimanStudy::_nil();
- init_orb();
-}*/
-
-SALOMEDS_SimanStudy::SALOMEDS_SimanStudy(SALOMEDS::SimanStudy_ptr theStudy)
-{
- /*
-#ifdef WIN32
- long pid = (long)_getpid();
-#else
- long pid = (long)getpid();
-#endif
-
- long addr = theStudy->GetLocalImpl(Kernel_Utils::GetHostname().c_str(), pid, _isLocal);
- if(_isLocal) {
- _local_impl = reinterpret_cast<SALOMEDSImpl_SimanStudy*>(addr);
- _corba_impl = SALOMEDS::SimanStudy::_duplicate(theStudy);
- }
- else {
- _local_impl = NULL;
- _corba_impl = SALOMEDS::SimanStudy::_duplicate(theStudy);
- }
- */
- _corba_impl = SALOMEDS::SimanStudy::_duplicate(theStudy);
-
- init_orb();
-}
-
-SALOMEDS_SimanStudy::~SALOMEDS_SimanStudy()
-{
-}
-
-void SALOMEDS_SimanStudy::CheckOut(const _PTR(Study) theTarget)
-{
- if (!theTarget) return;
- SALOMEDS_Study* aStudy = dynamic_cast<SALOMEDS_Study*>(theTarget.get());
- /*if (_isLocal) {
- //SALOMEDS::Locker lock; mpv: this may cause dedlock when importData in module calls another SALOMEDS method with lock
- _local_impl->CheckOut(aStudy->GetLocalImpl());
- }
- else*/ _corba_impl->CheckOut(aStudy->GetStudy());
-}
-
-void SALOMEDS_SimanStudy::CheckIn(const std::string theModuleName)
-{
- /*if (_isLocal) {
- //SALOMEDS::Locker lock; mpv: this may cause dedlock when getModifiedData in module calls another SALOMEDS method with lock
- _local_impl->CheckIn(theModuleName);
- }
- else*/ _corba_impl->CheckIn((char*)theModuleName.c_str());
-}
-
-_PTR(Study) SALOMEDS_SimanStudy::getReferencedStudy()
-{
- SALOMEDSClient_Study* aStudy = NULL;
- /*if (_isLocal) {
- SALOMEDS::Locker lock;
-
- SALOMEDSImpl_Study* aStudy_impl = _local_impl->getReferencedStudy();
- if (!aStudy_impl) return _PTR(Study)(aStudy);
- aStudy = new SALOMEDS_Study(aStudy_impl);
- }
- else {
- SALOMEDS::Study_var aStudy_impl = _corba_impl->getReferencedStudy();
- if (CORBA::is_nil(aStudy_impl)) return _PTR(Study)(aStudy);
- aStudy = new SALOMEDS_Study(aStudy_impl);
- }*/
- SALOMEDS::Study_var aStudy_impl = _corba_impl->getReferencedStudy();
- if (CORBA::is_nil(aStudy_impl)) return _PTR(Study)(aStudy);
- aStudy = new SALOMEDS_Study(aStudy_impl);
- return _PTR(Study)(aStudy);
-}
-
-std::string SALOMEDS_SimanStudy::StudyId()
-{
- std::string anId;
- /*if (_isLocal) {
- SALOMEDS::Locker lock;
- anId = _local_impl->StudyId();
- }
- else*/ anId = (CORBA::String_var)_corba_impl->StudyId();
- return anId;
-}
-
-void SALOMEDS_SimanStudy::StudyId(const std::string theId)
-{
- /*if (_isLocal) {
- SALOMEDS::Locker lock;
- _local_impl->StudyId(theId);
- }
- else*/ _corba_impl->StudyId((char*)theId.c_str());
-}
-
-std::string SALOMEDS_SimanStudy::ScenarioId()
-{
- std::string anId;
- /*if (_isLocal) {
- SALOMEDS::Locker lock;
- anId = _local_impl->ScenarioId();
- }
- else*/ anId = (CORBA::String_var)_corba_impl->ScenarioId();
- return anId;
-}
-
-void SALOMEDS_SimanStudy::ScenarioId(const std::string theId)
-{
- /*if (_isLocal) {
- SALOMEDS::Locker lock;
- _local_impl->ScenarioId(theId);
- }
- else*/ _corba_impl->ScenarioId((char*)theId.c_str());
-}
-
-std::string SALOMEDS_SimanStudy::UserId()
-{
- std::string anId;
- /*if (_isLocal) {
- SALOMEDS::Locker lock;
- anId = _local_impl->UserId();
- }
- else*/ anId = (CORBA::String_var)_corba_impl->UserId();
- return anId;
-}
-
-void SALOMEDS_SimanStudy::UserId(const std::string theId)
-{
- /*if (_isLocal) {
- SALOMEDS::Locker lock;
- _local_impl->UserId(theId);
- }
- else*/ _corba_impl->UserId((char*)theId.c_str());
-}
-
-void SALOMEDS_SimanStudy::init_orb()
-{
- ORB_INIT &init = *SINGLETON_<ORB_INIT>::Instance();
- ASSERT(SINGLETON_<ORB_INIT>::IsAlreadyExisting());
- _orb = init(0, 0);
-}
+++ /dev/null
-// Copyright (C) 2007-2015 CEA/DEN, EDF R&D, OPEN CASCADE
-//
-// Copyright (C) 2003-2007 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, or (at your option) any later version.
-//
-// 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.salome-platform.org/ or email : webmaster.salome@opencascade.com
-//
-
-// File : SALOMEDS_SimanStudy.hxx
-// Author : Mikhail PONIKAROV
-// Module : SALOME
-//
-#ifndef __SALOMEDS_SIMANSTUDY_H__
-#define __SALOMEDS_SIMANSTUDY_H__
-
-#include <vector>
-#include <string>
-
-#include <DF_definitions.hxx>
-#include "SALOMEDSClient.hxx"
-//#include "SALOMEDSImpl_SimanStudy.hxx"
-
-// IDL headers
-#include <SALOMEconfig.h>
-#include CORBA_SERVER_HEADER(SALOMEDS)
-
-class Standard_EXPORT SALOMEDS_SimanStudy: public SALOMEDSClient_SimanStudy
-{
-
-private:
- // bool _isLocal;
- //SALOMEDSImpl_SimanStudy* _local_impl; // MPV: no local implementation yet: siman operations works only with CORBA interface
- SALOMEDS::SimanStudy_var _corba_impl;
- CORBA::ORB_var _orb;
-
-public:
-
- //SALOMEDS_SimanStudy(SALOMEDSImpl_SimanStudy* theStudy);
- SALOMEDS_SimanStudy(SALOMEDS::SimanStudy_ptr theStudy);
- ~SALOMEDS_SimanStudy();
-
- virtual void CheckOut(const _PTR(Study) theTarget);
- virtual void CheckIn(const std::string theModuleName);
- virtual _PTR(Study) getReferencedStudy() ;
- virtual std::string StudyId();
- virtual void StudyId(const std::string theId);
- virtual std::string ScenarioId();
- virtual void ScenarioId(const std::string theId);
- virtual std::string UserId();
- virtual void UserId(const std::string theId);
-
-private:
- void init_orb();
-
-};
-#endif
+++ /dev/null
-// Copyright (C) 2007-2015 CEA/DEN, EDF R&D, OPEN CASCADE
-//
-// Copyright (C) 2003-2007 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, or (at your option) any later version.
-//
-// 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.salome-platform.org/ or email : webmaster.salome@opencascade.com
-//
-
-// File : SALOMEDS_SimanStudy_i.cxx
-// Author : Mikhail PONIKAROV
-// Module : SALOME
-//
-#include "SALOMEDS_SimanStudy_i.hxx"
-#include "SALOMEDS_Study_i.hxx"
-#include "SALOMEDS_Study.hxx"
-#include "SALOMEDS_Tool.hxx"
-#include "SALOME_DataContainer_i.hxx"
-#include "SALOME_NamingService.hxx"
-#include "SALOME_LifeCycleCORBA.hxx"
-#include "Basics_Utils.hxx"
-#include "Basics_DirUtils.hxx"
-#include "utilities.h"
-
-#ifdef WITH_SIMANIO
-#include <SimanIO_Link.hxx>
-#include <SimanIO_Activity.hxx>
-#endif
-
-#include <SALOMEconfig.h>
-#include CORBA_SERVER_HEADER(SALOME_Component)
-
-//============================================================================
-/*! Function : SALOMEDS_SimanStudy_i
- * Purpose : standard constructor
- */
-//============================================================================
-SALOMEDS_SimanStudy_i::SALOMEDS_SimanStudy_i(/*SALOMEDSImpl_SimanStudy* theImpl,*/ CORBA::ORB_ptr orb)
-{
- _orb = CORBA::ORB::_duplicate(orb);
- _name_service = new SALOME_NamingService(_orb);
-#ifdef WITH_SIMANIO
- _checkedOut = new SimanIO_Configuration;
-#endif
-}
-
-//============================================================================
-/*! Function : ~SALOMEDS_SimanStudy_i
- * Purpose : standard destructor
- */
-//============================================================================
-SALOMEDS_SimanStudy_i::~SALOMEDS_SimanStudy_i()
-{
-#ifdef WITH_SIMANIO
- if (_checkedOut) {
- SimanIO_Configuration::ActivitiesIterator actIter(*_checkedOut);
- for(; actIter.More(); actIter.Next()) {
- SimanIO_Activity::DocumentsIterator aDocIter(actIter.Activity());
- for(; aDocIter.More(); aDocIter.Next()) {
- SimanIO_Document& aDoc = aDocIter.Document();
- SimanIO_Document::FilesIterator aFileIter(aDoc);
- for(; aFileIter.More(); aFileIter.Next()) {
- std::string aURL = aFileIter.URL();
- std::string aDir = Kernel_Utils::GetDirName(aURL);
- aDir += "/";
- std::string aFileName = aURL.substr(aDir.size());
- SALOMEDS::ListOfFileNames aTmpFiles;
- aTmpFiles.length(1);
- aTmpFiles[0] = aFileName.c_str();
- // try to remove temporary directory that contains this file if directory becomes empty
- SALOMEDS_Tool::RemoveTemporaryFiles(aDir, aTmpFiles, true);
- }
- }
- }
- delete _checkedOut;
- }
-#endif
- delete _name_service;
-}
-
-//============================================================================
-/*! Function : CheckOut
- * Purpose : Get data from SIMAN and put it to the given study
- */
-//============================================================================
-void SALOMEDS_SimanStudy_i::CheckOut(SALOMEDS::Study_ptr theTarget)
-{
- // SimanStudy and Study must be located at the same place anyway
- SALOMEDS_Study aStudy(theTarget);
- _study = aStudy.GetLocalImpl();
- if (_study) {
-#ifdef WITH_SIMANIO
- int aLocked = _study->GetProperties()->IsLocked();
- if (aLocked) _study->GetProperties()->SetLocked(false);
-
- SimanIO_Link aLink(_studyId.c_str(), _scenarioId.c_str(), _userId.c_str());
- if (aLink.IsConnected()) {
- // Set "C" locale temporarily to avoid possible localization problems
- Kernel_Utils::Localizer loc;
- *_checkedOut = aLink.RetrieveConf();
- SimanIO_Configuration::ActivitiesIterator actIter(*_checkedOut);
- for(; actIter.More(); actIter.Next()) {
- Engines::EngineComponent_var aComp =
- SALOME_LifeCycleCORBA(_name_service).FindOrLoad_Component("FactoryServer", actIter.Activity().Module());
- if (CORBA::is_nil(aComp)) {
- MESSAGE("Checkout: component "<<actIter.Activity().Module()<<" is nil");
- } else {
- SimanIO_Activity::DocumentsIterator aDocIter(actIter.Activity());
- for(; aDocIter.More(); aDocIter.Next()) {
- if (_filesId.find(aDocIter.DocId()) == _filesId.end())
- _filesId[aDocIter.DocId()] = std::map<std::string, int>();
- SimanIO_Document& aDoc = aDocIter.Document();
- SimanIO_Document::FilesIterator aFileIter(aDoc);
- for(; aFileIter.More(); aFileIter.Next()) {
- if (aFileIter.GetProcessing() == FILE_IMPORT) {
- // files provided by SIMAN will be removed later, on study close
- Engines::DataContainer_var aData = (new Engines_DataContainer_i(
- aFileIter.URL(), aDoc.Name(), "", false))->_this();
- Engines::ListOfOptions anEmptyOpts;
- Engines::ListOfIdentifiers_var anIds = aComp->importData(_study->StudyId(), aData, anEmptyOpts);
- for(int anIdNum = 0; anIdNum < anIds->length(); anIdNum++) {
- const char* anId = anIds[anIdNum];
- _filesId[aDocIter.DocId()][anId] = aFileIter.Id();
- }
- } else {
- MESSAGE("!!! File just downloaded, not imported:"<<aFileIter.Id());
- }
- }
- }
- }
- }
- } else {
- MESSAGE("There is no connection to SIMAN!");
- }
-
- if (aLocked) _study->GetProperties()->SetLocked(true);
-#endif
- }
-}
-
-//============================================================================
-/*! Function : CheckIn
- * Purpose : Get data from SIMAN study and stores to SIMAN
- */
-//============================================================================
-void SALOMEDS_SimanStudy_i::CheckIn(const char* theModuleName)
-{
- if (_study) {
-#ifdef WITH_SIMANIO
- std::string aModuleName(theModuleName);
- SimanIO_Link aLink(_studyId.c_str(), _scenarioId.c_str(), _userId.c_str());
- if (aLink.IsConnected()) {
- // Set "C" locale temporarily to avoid possible localization problems
- Kernel_Utils::Localizer loc;
- SimanIO_Configuration aToStore; // here create and store data in this configuration to check in to SIMAN
- std::string aTmpDir = SALOMEDS_Tool::GetTmpDir(); // temporary directory for checked in files
- int aFileIndex = 0; // for unique file name generation
- std::list<std::string> aTemporaryFileNames;
- SimanIO_Configuration::ActivitiesIterator actIter(*_checkedOut);
- for(; actIter.More(); actIter.Next()) {
- int aDocId = actIter.Activity().DocumentMaxID();
- //if (aDocId < 0) continue; // no documents => no check in
- if (!aModuleName.empty() && aModuleName != actIter.Activity().Module()) {
- continue;
- }
- Engines::EngineComponent_var aComp =
- SALOME_LifeCycleCORBA(_name_service).FindOrLoad_Component("FactoryServer", actIter.Activity().Module());
- if (CORBA::is_nil(aComp)) {
- MESSAGE("Checkin: component "<<actIter.Activity().Module()<<" is nil");
- } else {
- SimanIO_Document aDoc;
- if (aDocId != -1) // get document is at least one exists in this action, "-1" is the Id of the new document otherwise
- aDoc = actIter.Activity().Document(aDocId);
- Engines::ListOfData_var aList = aComp->getModifiedData(_study->StudyId());
- int aNumData = aList->length();
- for(int aDataIndex = 0; aDataIndex < aNumData; aDataIndex++) {
- Engines::DataContainer_var aData = aList[aDataIndex];
- // store this in the configuration
- SimanIO_Activity& aStoreActivity = aToStore.GetOrCreateActivity(actIter.ActivityId());
- aStoreActivity.SetName(actIter.Activity().Name());
- aStoreActivity.SetModule(actIter.Activity().Module());
- SimanIO_Document& aStoreDoc = aStoreActivity.GetOrCreateDocument(aDocId);
- aStoreDoc.SetName(aDoc.Name());
- // prepare a file to store
- SimanIO_File aStoreFile;
-
- std::stringstream aNumStore;
- aNumStore<<"file"<<(++aFileIndex);
- std::string aFileName(aNumStore.str());
- std::string anExtension(aData->extension());
- aFileName += "." + anExtension;
- std::string aFullPath = aTmpDir + aFileName;
- Engines::TMPFile* aFileStream = aData->get();
- const char *aBuffer = (const char*)aFileStream->NP_data();
-#ifdef WIN32
- std::ofstream aFile(aFullPath.c_str(), std::ios::binary);
-#else
- std::ofstream aFile(aFullPath.c_str());
-#endif
- aFile.write(aBuffer, aFileStream->length());
- aFile.close();
- aTemporaryFileNames.push_back(aFileName);
-
- aStoreFile.url = aFullPath;
- if (_filesId[aDocId].find(aData->identifier()) != _filesId[aDocId].end()) { // file is already exists
- aStoreFile.id = _filesId[aDocId][aData->identifier()];
- aStoreFile.result = aDoc.File(aStoreFile.id).result;
- } else {
- aStoreFile.id = -1; // to be created as new
- aStoreFile.result = true; // new is always result
- }
-
- aStoreDoc.AddFile(aStoreFile);
- }
- }
- }
- aLink.StoreConf(aToStore);
- // after files have been stored, remove them from the temporary directory
- SALOMEDS::ListOfFileNames aTmpFiles;
- aTmpFiles.length(aTemporaryFileNames.size());
- std::list<std::string>::const_iterator aFilesIter = aTemporaryFileNames.begin();
- for(int a = 0; aFilesIter != aTemporaryFileNames.end(); aFilesIter++, a++) {
- aTmpFiles[a] = aFilesIter->c_str();
- }
- SALOMEDS_Tool::RemoveTemporaryFiles(aTmpDir, aTmpFiles, true);
- } else {
- MESSAGE("There is no connection to SIMAN!")
- }
-#endif
- }
-}
-
-//============================================================================
-/*! Function : getReferencedStudy
- * Purpose : Returns the %Study with checked out data
- */
-//============================================================================
-SALOMEDS::Study_ptr SALOMEDS_SimanStudy_i::getReferencedStudy()
-{
- SALOMEDS::Study_var aStudy = (new SALOMEDS_Study_i(_study, _orb))->_this();
- return aStudy._retn();
-}
-
-//============================================================================
-/*! Function : StudyId
- * Purpose : The ID of the study in SIMAN server
- */
-//============================================================================
-char* SALOMEDS_SimanStudy_i::StudyId()
-{
- return CORBA::string_dup(_studyId.c_str());
-}
-
-//============================================================================
-/*! Function : StudyId
- * Purpose : The ID of the study in SIMAN server
- */
-//============================================================================
-void SALOMEDS_SimanStudy_i::StudyId(const char* theId)
-{
- _studyId = theId;
-}
-
-//============================================================================
-/*! Function : ScenarioId
- * Purpose : The ID of the scenario in SIMAN server
- */
-//============================================================================
-char* SALOMEDS_SimanStudy_i::ScenarioId()
-{
- return CORBA::string_dup(_scenarioId.c_str());
-}
-
-//============================================================================
-/*! Function : ScenarioId
- * Purpose : The ID of the scenario in SIMAN server
- */
-//============================================================================
-void SALOMEDS_SimanStudy_i::ScenarioId(const char* theId)
-{
- _scenarioId = theId;
-}
-
-//============================================================================
-/*! Function : UserId
- * Purpose : The ID of the user in SIMAN server
- */
-//============================================================================
-char* SALOMEDS_SimanStudy_i::UserId()
-{
- return CORBA::string_dup(_userId.c_str());
-}
-
-//============================================================================
-/*! Function : UserId
- * Purpose : The ID of the user in SIMAN server
- */
-//============================================================================
-void SALOMEDS_SimanStudy_i::UserId(const char* theId)
-{
- _userId = theId;
-}
-
-SALOMEDS_SimanStudy_i* SALOMEDS_SimanStudy_i::GetSimanServant(CORBA::ORB_ptr orb)
-{
- static SALOMEDS_SimanStudy_i* aServant = 0;
- if (aServant == 0) {
- aServant = new SALOMEDS_SimanStudy_i(orb);
- }
- return aServant;
-}
-
-/// PRIVATE FUNCTIONS
-/*
-CORBA::LongLong SALOMEDS_SimanStudy_i::GetLocalImpl(const char* theHostname, CORBA::Long thePID, CORBA::Boolean& isLocal)
-{
-#ifdef WIN32
- long pid = (long)_getpid();
-#else
- long pid = (long)getpid();
-#endif
- isLocal = (strcmp(theHostname, Kernel_Utils::GetHostname().c_str()) == 0 && pid == thePID)?1:0;
- return reinterpret_cast<CORBA::LongLong>(_impl);
-}
-*/
+++ /dev/null
-// Copyright (C) 2007-2015 CEA/DEN, EDF R&D, OPEN CASCADE
-//
-// Copyright (C) 2003-2007 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, or (at your option) any later version.
-//
-// 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.salome-platform.org/ or email : webmaster.salome@opencascade.com
-//
-
-// File : SALOMEDS_SimanStudy_i.hxx
-// Author : Mikhail PONIKAROV
-// Module : SALOME
-//
-#ifndef __SALOMEDS_SIMANSTUDY_I_H__
-#define __SALOMEDS_SIMANSTUDY_I_H__
-
-// IDL headers
-#include <SALOMEconfig.h>
-#include CORBA_SERVER_HEADER(SALOMEDS)
-
-//SALOMEDS headers
-#include "SALOMEDS_Study_i.hxx"
-
-class SimanIO_Configuration;
-class SALOME_NamingService;
-
-class Standard_EXPORT SALOMEDS_SimanStudy_i: public POA_SALOMEDS::SimanStudy
-{
-private:
- CORBA::ORB_var _orb;
- SALOME_NamingService* _name_service;
- //SALOMEDSImpl_SimanStudy* _impl;
- SALOMEDSImpl_Study* _study;
-
- std::string _studyId; // SIMAN ID
- std::string _scenarioId; // SIMAN ID
- std::string _userId; // SIMAN ID
-
- SimanIO_Configuration* _checkedOut; // pointer to information about checked out data std::map<int, std::map<std::string, int> > _filesId; // map from document id to component identifiers to SIMAN file ID
- std::map<int, std::map<std::string, int> > _filesId; // map from document id to component identifiers to SIMAN file ID
-
-public:
-
- //! constructor create global Siman stduy (is called in StudyManager only)
- SALOMEDS_SimanStudy_i(/*SALOMEDSImpl_SimanStudy*,*/ CORBA::ORB_ptr);
-
- //! standard destructor
- virtual ~SALOMEDS_SimanStudy_i();
-
- /*! \brief Get data from SIMAN and put it to the given study
-
- This method is called for just created study to make it referenced
- by this Siman study. Also it fills this study by the checked out
- data from SIMAN server.
- Warning: StudyID, ScenarioID and User Id must be set before calling of this method!
-
- \param theTarget referenced study for checking out
- */
- virtual void CheckOut(SALOMEDS::Study_ptr theTarget);
-
- /*! \brief Get data from all modules and calls the corresponding SimanIO methods to store it.
-
- It works only with already checked out study
- */
- virtual void CheckIn(const char* themoduleName);
-
- /*! \brief Returns the %Study with checked out data
-
- If study is null, there is no such study in this application instance, or Salome was
- launched without siman option.
- */
- virtual SALOMEDS::Study_ptr getReferencedStudy();
-
- /*! \brief The ID of the study in SIMAN server
-
- Returns the Id of SIMAN study, used for CheckOut before.
- */
- virtual char* StudyId();
-
- /*! \brief The ID of the study in SIMAN server
-
- Defines the Id of SIMAN study, used for CheckOut after.
- */
- virtual void StudyId(const char* theId);
-
- /*! \brief The ID of the scenario in SIMAN server
-
- Returns the Id of SIMAN scenario, used for CheckOut before.
- */
- virtual char* ScenarioId();
-
- /*! \brief The ID of the scenario in SIMAN server
-
- Defines the Id of SIMAN scenario, used for CheckOut after.
- */
- virtual void ScenarioId(const char* theId);
-
- /*! \brief The ID of the user in SIMAN server
-
- Returns the Id of SIMAN user, used for CheckOut before.
- */
- virtual char* UserId();
-
- /*! \brief The ID of the user in SIMAN server
-
- Defines the Id of SIMAN user, used for CheckOut after.
- */
- virtual void UserId(const char* theId);
-
- //virtual CORBA::LongLong GetLocalImpl(const char* theHostname, CORBA::Long thePID, CORBA::Boolean& isLocal);
-
- static SALOMEDS_SimanStudy_i* GetSimanServant(CORBA::ORB_ptr orb);
-};
-#endif
#include "SALOMEDS_Study.hxx"
#include "SALOMEDS_SObject.hxx"
#include "SALOMEDS_Driver_i.hxx"
-#include "SALOMEDS_SimanStudy.hxx"
#include "SALOMEDSImpl_Study.hxx"
-#include "Utils_ORB_INIT.hxx"
+#include "Utils_ORB_INIT.hxx"
#include "Utils_SINGLETON.hxx"
-#include "utilities.h"
+#include "utilities.h"
#include "Basics_Utils.hxx"
long pid = (long)_getpid();
#else
long pid = (long)getpid();
-#endif
+#endif
CORBA::LongLong addr = theManager->GetLocalImpl(Kernel_Utils::GetHostname().c_str(), pid, _isLocal);
if(_isLocal) {
long pid = (long)_getpid();
#else
long pid = (long)getpid();
-#endif
+#endif
CORBA::LongLong addr = theManager->GetLocalImpl(Kernel_Utils::GetHostname().c_str(), pid, _isLocal);
if(_isLocal) {
_PTR(Study) SALOMEDS_StudyManager::NewStudy(const std::string& study_name)
{
- //SRN: Pure CORBA NewStudy as it does more initialization than the local one
+ //SRN: Pure CORBA NewStudy as it does more initialization than the local one
SALOMEDSClient_Study* aStudy = NULL;
SALOMEDS::Study_var aStudy_impl = _corba_impl->NewStudy((char*)study_name.c_str());
_PTR(Study) SALOMEDS_StudyManager::Open(const std::string& theStudyUrl)
{
- //SRN: Pure CORBA Open as it does more initialization than the local one
+ //SRN: Pure CORBA Open as it does more initialization than the local one
SALOMEDSClient_Study* aStudy = NULL;
SALOMEDS::Study_var aStudy_impl = _corba_impl->Open((char*)theStudyUrl.c_str());
if(CORBA::is_nil(aStudy_impl)) return _PTR(Study)(aStudy);
-
+
aStudy = new SALOMEDS_Study(aStudy_impl.in());
return _PTR(Study)(aStudy);
}
-
+
void SALOMEDS_StudyManager::Close(const _PTR(Study)& theStudy)
{
//SRN: Pure CORBA close as it does more cleaning than the local one
SALOMEDS::Study_var aStudy = _corba_impl->GetStudyByID(theStudy->StudyId());
_corba_impl->Close(aStudy);
}
-
+
bool SALOMEDS_StudyManager::Save(const _PTR(Study)& theStudy, bool theMultiFile)
{
- //SRN: Pure CORBA save as the save operation require CORBA in any case
+ //SRN: Pure CORBA save as the save operation require CORBA in any case
SALOMEDS::Study_var aStudy = _corba_impl->GetStudyByID(theStudy->StudyId());
return _corba_impl->Save(aStudy, theMultiFile);
}
-
+
bool SALOMEDS_StudyManager::SaveASCII(const _PTR(Study)& theStudy, bool theMultiFile)
{
- //SRN: Pure CORBA save as the save operation require CORBA in any case
+ //SRN: Pure CORBA save as the save operation require CORBA in any case
SALOMEDS::Study_var aStudy = _corba_impl->GetStudyByID(theStudy->StudyId());
return _corba_impl->SaveASCII(aStudy, theMultiFile);
}
-
+
bool SALOMEDS_StudyManager::SaveAs(const std::string& theUrl, const _PTR(Study)& theStudy, bool theMultiFile)
{
- //SRN: Pure CORBA save as the save operation require CORBA in any case
+ //SRN: Pure CORBA save as the save operation require CORBA in any case
SALOMEDS::Study_var aStudy = _corba_impl->GetStudyByID(theStudy->StudyId());
return _corba_impl->SaveAs((char*)theUrl.c_str(), aStudy, theMultiFile);
}
-
+
bool SALOMEDS_StudyManager::SaveAsASCII(const std::string& theUrl, const _PTR(Study)& theStudy, bool theMultiFile)
{
- //SRN: Pure CORBA save as the save operation require CORBA in any case
+ //SRN: Pure CORBA save as the save operation require CORBA in any case
SALOMEDS::Study_var aStudy = _corba_impl->GetStudyByID(theStudy->StudyId());
return _corba_impl->SaveAsASCII((char*)theUrl.c_str(), aStudy, theMultiFile);
}
std::vector<SALOMEDSImpl_Study*> aSeq = _local_impl->GetOpenStudies();
aLength = aSeq.size();
- for(i = 0; i < aLength; i++)
+ for(i = 0; i < aLength; i++)
aVector.push_back(aSeq[i]->Name());
}
else {
SALOMEDS::ListOfOpenStudies_var aSeq = _corba_impl->GetOpenStudies();
aLength = aSeq->length();
- for(i = 0; i < aLength; i++)
+ for(i = 0; i < aLength; i++)
aVector.push_back(aSeq[i].in());
}
return aVector;
}
-_PTR(Study) SALOMEDS_StudyManager::GetStudyByName(const std::string& theStudyName)
+_PTR(Study) SALOMEDS_StudyManager::GetStudyByName(const std::string& theStudyName)
{
SALOMEDSClient_Study* aStudy = NULL;
if (_isLocal) {
return _PTR(Study)(aStudy);
}
-_PTR(Study) SALOMEDS_StudyManager::GetStudyByID(int theStudyID)
+_PTR(Study) SALOMEDS_StudyManager::GetStudyByID(int theStudyID)
{
SALOMEDSClient_Study* aStudy = NULL;
if (_isLocal) {
if(!aStudy_impl) return _PTR(Study)(aStudy);
aStudy = new SALOMEDS_Study(aStudy_impl);
}
- else {
+ else {
SALOMEDS::Study_var aStudy_impl = _corba_impl->GetStudyByID(theStudyID);
if(CORBA::is_nil(aStudy_impl)) return _PTR(Study)(aStudy);
aStudy = new SALOMEDS_Study(aStudy_impl);
SALOMEDS_Driver_i* GetDriver(const SALOMEDSImpl_SObject& theObject, CORBA::ORB_ptr orb)
{
SALOMEDS_Driver_i* driver = NULL;
-
+
SALOMEDSImpl_SComponent aSCO = theObject.GetFatherComponent();
if(!aSCO.IsNull()) {
std::string IOREngine = aSCO.GetIOR();
return driver;
}
-
-_PTR(SimanStudy) SALOMEDS_StudyManager::GetSimanStudy()
-{
- SALOMEDSClient_SimanStudy* aSiman = NULL;
- /*if (_isLocal) {
- SALOMEDS::Locker lock;
-
- SALOMEDSImpl_SimanStudy* aSiman_impl = _local_impl->GetSimanStudy();
- if(!aSiman_impl) return _PTR(SimanStudy)(aSiman);
- aSiman = new SALOMEDS_SimanStudy(aSiman_impl);
- }
- else {
- SALOMEDS::SimanStudy_var aSiman_impl = _corba_impl->GetSimanStudy();
- if(CORBA::is_nil(aSiman_impl)) return _PTR(SimanStudy)(aSiman);
- aSiman = new SALOMEDS_SimanStudy(aSiman_impl);
- }*/
- SALOMEDS::SimanStudy_var aSiman_impl = _corba_impl->GetSimanStudy();
- if(CORBA::is_nil(aSiman_impl)) return _PTR(SimanStudy)(aSiman);
- aSiman = new SALOMEDS_SimanStudy(aSiman_impl);
- return _PTR(SimanStudy)(aSiman);
-}
private:
bool _isLocal;
SALOMEDSImpl_StudyManager* _local_impl;
- SALOMEDS::StudyManager_var _corba_impl;
+ SALOMEDS::StudyManager_var _corba_impl;
CORBA::ORB_var _orb;
public:
virtual bool CanCopy(const _PTR(SObject)& theSO);
virtual bool Copy(const _PTR(SObject)& theSO);
virtual bool CanPaste(const _PTR(SObject)& theSO);
- virtual _PTR(SObject) Paste(const _PTR(SObject)& theSO);
- virtual _PTR(SimanStudy) GetSimanStudy();
+ virtual _PTR(SObject) Paste(const _PTR(SObject)& theSO);
private:
void init_orb();
};
-#endif
+#endif
#include "SALOMEDS_Study_i.hxx"
#include "SALOMEDS_SComponent_i.hxx"
#include "SALOMEDS_Driver_i.hxx"
-#include "SALOMEDS_SimanStudy_i.hxx"
#include "SALOMEDS.hxx"
#include "SALOMEDSImpl_Study.hxx"
delete _name_service;
delete _factory;
delete _impl;
- delete SALOMEDS_SimanStudy_i::GetSimanServant(_orb);
}
//============================================================================
}
CORBA::Long SALOMEDS_StudyManager_i::getPID()
-{
+{
#ifdef WIN32
return (CORBA::Long)_getpid();
#else
exit( EXIT_SUCCESS );
}
-//============================================================================
-/*! Function : GetSimanStudy
- * Purpose : Retruns the created or cashed SimanStudy
- */
-//============================================================================
-SALOMEDS::SimanStudy_ptr SALOMEDS_StudyManager_i::GetSimanStudy()
-{
- SALOMEDS::Locker lock;
-
- SALOMEDS_SimanStudy_i* aSiman_servant = SALOMEDS_SimanStudy_i::GetSimanServant(_orb);
- return aSiman_servant->_this();
-}
-
//===========================================================================
// PRIVATE FUNCTIONS
//===========================================================================
// To convert CORBA::Object to PortableServer::ServantBase
PortableServer::ServantBase_var GetServant(CORBA::Object_ptr, PortableServer::POA_ptr);
-}
+}
class Standard_EXPORT SALOMEDS_StudyManager_i: public POA_SALOMEDS::StudyManager
{
CORBA::ORB_var _orb;
PortableServer::POA_var _poa;
- SALOMEDSImpl_StudyManager* _impl;
+ SALOMEDSImpl_StudyManager* _impl;
SALOME_NamingService* _name_service;
- SALOMEDS_DriverFactory_i* _factory;
+ SALOMEDS_DriverFactory_i* _factory;
public:
SALOMEDS_StudyManager_i(CORBA::ORB_ptr orb, PortableServer::POA_ptr thePOA);
//! standard destructor
- virtual ~SALOMEDS_StudyManager_i();
+ virtual ~SALOMEDS_StudyManager_i();
//! method to Register study Manager in the naming service
/*!
\param char* arguments, the context to register the study manager in the NS
- */
+ */
void register_name(const char * name);
-
+
//! method to Create a New Study of name study_name
/*!
\param char* arguments, the new study name
\return Study_ptr arguments
- */
+ */
virtual SALOMEDS::Study_ptr NewStudy(const char* study_name) throw (SALOME::SALOME_Exception);
//! method to Open a Study from it's persistent reference
/*!
\param char* arguments, the study URL
\return Study_ptr arguments
- */
+ */
virtual SALOMEDS::Study_ptr Open(const char* aStudyUrl) throw (SALOME::SALOME_Exception);
- //! method to close a Study
+ //! method to close a Study
/*!
\param Study_ptr arguments
- */
+ */
virtual void Close( SALOMEDS::Study_ptr aStudy);
- //! method to save a Study
+ //! method to save a Study
/*!
\param Study_ptr arguments
*/
/*!
\param char* arguments, the study name
\return Study_ptr arguments
- */
+ */
virtual SALOMEDS::Study_ptr GetStudyByName(const char* aStudyName) ;
//! method to get a Study from it's ID
/*!
\param char* arguments, the study ID
\return Study_ptr arguments
- */
+ */
virtual SALOMEDS::Study_ptr GetStudyByID(CORBA::Short aStudyID) ;
-
+
virtual CORBA::Boolean CanCopy(SALOMEDS::SObject_ptr theObject);
virtual CORBA::Boolean Copy(SALOMEDS::SObject_ptr theObject);
virtual CORBA::Boolean CanPaste(SALOMEDS::SObject_ptr theObject);
virtual SALOMEDS::SObject_ptr Paste(SALOMEDS::SObject_ptr theObject) throw(SALOMEDS::StudyBuilder::LockProtection);
virtual char* ConvertObjectToIOR(CORBA::Object_ptr theObject) {return _orb->object_to_string(theObject); }
- virtual CORBA::Object_ptr ConvertIORToObject(const char* theIOR) { return _orb->string_to_object(theIOR); };
-
+ virtual CORBA::Object_ptr ConvertIORToObject(const char* theIOR) { return _orb->string_to_object(theIOR); };
+
void ping(){};
CORBA::Long getPID();
void ShutdownWithExit();
static PortableServer::POA_ptr GetPOA(const SALOMEDS::Study_ptr theStudy);
void Shutdown() { if(!CORBA::is_nil(_orb)) _orb->shutdown(0); }
-
- virtual SALOMEDS::SimanStudy_ptr GetSimanStudy();
};
-#endif
+#endif
#include "SALOMEDSClient_GenericAttribute.hxx"
#include "SALOMEDSClient_SComponent.hxx"
#include "SALOMEDSClient_SComponentIterator.hxx"
-#include "SALOMEDSClient_SimanStudy.hxx"
#include "SALOMEDSClient_SObject.hxx"
#include "SALOMEDSClient_Study.hxx"
#include "SALOMEDSClient_StudyBuilder.hxx"
+++ /dev/null
-// Copyright (C) 2007-2015 CEA/DEN, EDF R&D, OPEN CASCADE
-//
-// Copyright (C) 2003-2007 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, or (at your option) any later version.
-//
-// 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.salome-platform.org/ or email : webmaster.salome@opencascade.com
-//
-
-// File : SALOMEDSClient_SimanStudy.hxx
-// Author : Mikhail PONIKAROV
-// Module : SALOME
-//
-#ifndef __SALOMEDSClient_SIMANSTUDY_H__
-#define __SALOMEDSClient_SIMANSTUDY_H__
-
-#include <vector>
-#include <string>
-
-#include "SALOMEDSClient_definitions.hxx"
-#include "SALOMEDSClient_Study.hxx"
-#include <SALOMEconfig.h>
-#include CORBA_CLIENT_HEADER(SALOMEDS)
-
-class SALOMEDSClient_SimanStudy
-{
-
-public:
- virtual ~SALOMEDSClient_SimanStudy() {}
-
- virtual void CheckOut(const _PTR(Study) theTarget) = 0;
- virtual void CheckIn(const std::string theModuleName) = 0;
- virtual _PTR(Study) getReferencedStudy() = 0;
- virtual std::string StudyId() = 0;
- virtual void StudyId(const std::string theId) = 0;
- virtual std::string ScenarioId() = 0;
- virtual void ScenarioId(const std::string theId) = 0;
- virtual std::string UserId() = 0;
- virtual void UserId(const std::string theId) = 0;
-};
-
-#endif
#include "SALOMEDSClient_definitions.hxx"
#include "SALOMEDSClient_Study.hxx"
-#include "SALOMEDSClient_SimanStudy.hxx"
class SALOMEDSClient_StudyManager
{
virtual bool Copy(const _PTR(SObject)& theSO) = 0;
virtual bool CanPaste(const _PTR(SObject)& theSO) = 0;
virtual _PTR(SObject) Paste(const _PTR(SObject)& theSO) = 0;
- virtual _PTR(SimanStudy) GetSimanStudy() = 0;
};
-#endif
+#endif