29 #ifndef _SALOME_CONTAINER_I_HXX_ 
   30 #define _SALOME_CONTAINER_I_HXX_ 
   32 #include "SALOME_Container.hxx" 
   33 #include "Utils_Mutex.hxx" 
   35 #include <SALOMEconfig.h> 
   36 #include CORBA_SERVER_HEADER(SALOME_Component) 
   37 #include CORBA_SERVER_HEADER(SALOME_PyNode) 
   45 #include <sys/types.h> 
   46 #include <omnithread.h> 
   54   public virtual POA_Engines::Container,
 
   55   public virtual PortableServer::ServantBase
 
   60                       PortableServer::POA_ptr poa,
 
   61                       char * containerName ,
 
   62                       int argc, 
char* argv[],
 
   63                       bool activAndRegist = 
true,
 
   64                       bool isServantAloneInProcess = 
true);
 
   69   virtual bool load_component_Library(
const char* componentName, CORBA::String_out reason);
 
   71   virtual Engines::EngineComponent_ptr
 
   72   create_component_instance( 
const char* componentName,
 
   75   virtual Engines::EngineComponent_ptr
 
   76   create_component_instance_env( 
const char* componentName,
 
   78                                  const Engines::FieldsDict& env,
 
   79                                  CORBA::String_out reason);
 
   82   create_python_service_instance(
const char* CompName,
 
   83                                  CORBA::String_out reason);
 
   85   Engines::EngineComponent_ptr
 
   86   find_component_instance( 
const char* registeredName,
 
   89   Engines::EngineComponent_ptr
 
   90   load_impl(
const char* nameToRegister,
 
   91             const char* componentName);
 
   94   void remove_impl(Engines::EngineComponent_ptr component_i);
 
   95   void finalize_removal();
 
  101   void logfilename(
const char* name);
 
  103   virtual void Shutdown();
 
  105   CORBA::Long getPID();
 
  109   Engines::fileRef_ptr createFileRef(
const char* origFileName);
 
  110   Engines::fileTransfer_ptr getFileTransfer();
 
  112   virtual Engines::Salome_file_ptr createSalome_file(
const char* origFileName);
 
  113   void copyFile(Engines::Container_ptr container, 
const char* remoteFile, 
const char* localFile);
 
  114   Engines::PyNode_ptr createPyNode(
const char* nodeName, 
const char* code);
 
  115   Engines::PyNode_ptr getDefaultPyNode(
const char *nodeName);
 
  116   Engines::PyScriptNode_ptr createPyScriptNode(
const char* nodeName, 
const char* code);
 
  117   Engines::PyScriptNode_ptr getDefaultPyScriptNode(
const char *nodeName);
 
  120   Engines::EngineComponent_ptr
 
  121   find_or_create_instance( std::string genericRegisterName,
 
  122                            std::string componentLibraryName);
 
  124   bool load_component_CppImplementation(
const char* componentName,std::string& reason);
 
  125   bool load_component_PythonImplementation(
const char* componentName,std::string& reason);
 
  126   bool load_component_ExecutableImplementation(
const char* componentName,std::string& reason);
 
  128   Engines::EngineComponent_ptr createPythonInstance(std::string CompName, 
int studyId, std::string& error);
 
  129   Engines::EngineComponent_ptr createExecutableInstance(std::string CompName, 
int studyId, 
const Engines::FieldsDict& env, std::string& error);
 
  130   Engines::EngineComponent_ptr createInstance(std::string genericRegisterName, 
void *handle, 
int studyId, std::string& error);
 
  132   static bool isPythonContainer(
const char* ContainerName);
 
  133   static void decInstanceCnt(std::string genericRegisterName);
 
  138   int getArgc() { 
return _argc; }
 
  139   char **getArgv() { 
return _argv; }
 
  141   void registerTemporaryFile( 
const std::string& fileName );
 
  142   void unregisterTemporaryFile( 
const std::string& fileName );
 
  143   void clearTemporaryFiles();
 
  147   static std::map<std::string, int> _cntInstances_map;
 
  148   static std::map<std::string, void *> _library_map; 
 
  149   static std::map<std::string, void *> _toRemove_map;
 
  152   bool _isSupervContainer;
 
  155   std::string _library_path;
 
  156   std::string _containerName;
 
  157   std::string _logfilename;
 
  159   PortableServer::POA_var _poa;
 
  160   PortableServer::ObjectId * _id ;
 
  162   std::map<std::string,Engines::EngineComponent_var> _listInstances_map;
 
  163   std::map<std::string,Engines::fileRef_var> _fileRef_map;
 
  164   std::map<std::string,Engines::Salome_file_var> _Salome_file_map;
 
  165   std::map<std::string,Engines::PyScriptNode_var> _dftPyScriptNode;
 
  166   std::map<std::string,Engines::PyNode_var> _dftPyNode;
 
  168   std::list<std::string> _tmp_files;
 
  169   Engines::fileTransfer_var _fileTransfer;
 
  174   bool   _isServantAloneInProcess;