X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FContainer%2FSALOME_Container_i.hxx;h=197d0def95f49a37db0c8bfb496e1d5f6be97b89;hb=52111d0ad7a0d8acccc1bb4e49bb5877d949b844;hp=14d51c5df40be9f53a0a4f6a7b03dbcccb4eedcb;hpb=e6bfea36374791cd31c274a2f97df90dc60ddaf3;p=modules%2Fkernel.git diff --git a/src/Container/SALOME_Container_i.hxx b/src/Container/SALOME_Container_i.hxx index 14d51c5df..197d0def9 100644 --- a/src/Container/SALOME_Container_i.hxx +++ b/src/Container/SALOME_Container_i.hxx @@ -1,101 +1,105 @@ -// SALOME Container : implementation of container and engine for Kernel +// Copyright (C) 2007-2016 CEA/DEN, EDF R&D, OPEN CASCADE // -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com +// 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 Container : implementation of container and engine for Kernel // File : SALOME_Container_i.hxx // Author : Paul RASCLE, EDF - MARC TAJCHMAN, CEA // Module : SALOME // $Header$ - +// #ifndef _SALOME_CONTAINER_I_HXX_ #define _SALOME_CONTAINER_I_HXX_ +#include "SALOME_Container.hxx" +#include "Utils_Mutex.hxx" + #include #include CORBA_SERVER_HEADER(SALOME_Component) +#include CORBA_SERVER_HEADER(SALOME_PyNode) #include #include #include -#ifndef WNT +#ifndef WIN32 #include #endif #include #include #include +#include #include class SALOME_NamingService; - -#if defined CONTAINER_EXPORTS -#if defined WIN32 -#define CONTAINER_EXPORT __declspec( dllexport ) -#else -#define CONTAINER_EXPORT -#endif -#else -#if defined WNT -#define CONTAINER_EXPORT __declspec( dllimport ) -#else -#define CONTAINER_EXPORT -#endif -#endif - class CONTAINER_EXPORT Engines_Container_i: public virtual POA_Engines::Container, - public virtual PortableServer::RefCountServantBase + public virtual PortableServer::ServantBase { public: Engines_Container_i(); Engines_Container_i(CORBA::ORB_ptr orb, - PortableServer::POA_var poa, - char * containerName , + PortableServer::POA_ptr poa, + char * containerName , int argc, char* argv[], - bool activAndRegist = true, - bool isServantAloneInProcess = true); + bool activAndRegist = true, + bool isServantAloneInProcess = true); virtual ~Engines_Container_i(); // --- CORBA methods - virtual bool load_component_Library(const char* componentName); + virtual bool load_component_Library(const char* componentName, CORBA::String_out reason); - virtual Engines::Component_ptr + virtual Engines::EngineComponent_ptr create_component_instance( const char* componentName, - CORBA::Long studyId); // 0 for multiStudy + CORBA::Long studyId); // 0 for multiStudy + + virtual Engines::EngineComponent_ptr + create_component_instance_env( const char* componentName, + CORBA::Long studyId, // 0 for multiStudy + const Engines::FieldsDict& env, + CORBA::String_out reason); + + virtual char * + create_python_service_instance(const char* CompName, + CORBA::String_out reason); - Engines::Component_ptr + Engines::EngineComponent_ptr find_component_instance( const char* registeredName, - CORBA::Long studyId); // 0 for multiStudy + CORBA::Long studyId); // 0 for multiStudy - Engines::Component_ptr + Engines::EngineComponent_ptr load_impl(const char* nameToRegister, - const char* componentName); + const char* componentName); - void remove_impl(Engines::Component_ptr component_i); + void remove_impl(Engines::EngineComponent_ptr component_i); void finalize_removal(); virtual void ping(); char* name(); + char* workingdir(); + char* logfilename(); + void logfilename(const char* name); + virtual void Shutdown(); char* getHostName(); CORBA::Long getPID(); @@ -105,17 +109,25 @@ public: Engines::fileRef_ptr createFileRef(const char* origFileName); Engines::fileTransfer_ptr getFileTransfer(); - + virtual Engines::Salome_file_ptr createSalome_file(const char* origFileName); + void copyFile(Engines::Container_ptr container, const char* remoteFile, const char* localFile); + Engines::PyNode_ptr createPyNode(const char* nodeName, const char* code); + Engines::PyNode_ptr getDefaultPyNode(const char *nodeName); + Engines::PyScriptNode_ptr createPyScriptNode(const char* nodeName, const char* code); + Engines::PyScriptNode_ptr getDefaultPyScriptNode(const char *nodeName); // --- local C++ methods - Engines::Component_ptr + Engines::EngineComponent_ptr find_or_create_instance( std::string genericRegisterName, - std::string componentLibraryName); + std::string componentLibraryName); + + bool load_component_CppImplementation(const char* componentName,std::string& reason); + bool load_component_PythonImplementation(const char* componentName,std::string& reason); + bool load_component_ExecutableImplementation(const char* componentName,std::string& reason); - Engines::Component_ptr - createInstance(std::string genericRegisterName, - void *handle, - int studyId); + Engines::EngineComponent_ptr createPythonInstance(std::string CompName, int studyId, std::string& error); + Engines::EngineComponent_ptr createExecutableInstance(std::string CompName, int studyId, const Engines::FieldsDict& env, std::string& error); + Engines::EngineComponent_ptr createInstance(std::string genericRegisterName, void *handle, int studyId, std::string& error); static bool isPythonContainer(const char* ContainerName); static void decInstanceCnt(std::string genericRegisterName); @@ -126,6 +138,10 @@ public: int getArgc() { return _argc; } char **getArgv() { return _argv; } + void registerTemporaryFile( const std::string& fileName ); + void unregisterTemporaryFile( const std::string& fileName ); + void clearTemporaryFiles(); + protected: static std::map _cntInstances_map; @@ -138,12 +154,18 @@ protected: SALOME_NamingService *_NS ; std::string _library_path; std::string _containerName; + std::string _logfilename; CORBA::ORB_var _orb; PortableServer::POA_var _poa; PortableServer::ObjectId * _id ; int _numInstance ; - std::map _listInstances_map; + std::map _listInstances_map; std::map _fileRef_map; + std::map _Salome_file_map; + std::map _dftPyScriptNode; + std::map _dftPyNode; + Utils_Mutex _mutexForDftPy; + std::list _tmp_files; Engines::fileTransfer_var _fileTransfer; int _argc ; @@ -153,4 +175,3 @@ protected: }; #endif -