X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FContainer%2FSALOME_Container_i.hxx;h=4acef01d28c9083a7abc202f8b03fbaf0ae090a7;hb=3ce0546302001755828c8476425a60c6ab61ac92;hp=9f67a52ce4fc5410d74b26946ff7d41c0f5f7c54;hpb=81d9fa9bc737c09132390cb7ebfe44adb43f0d93;p=modules%2Fkernel.git diff --git a/src/Container/SALOME_Container_i.hxx b/src/Container/SALOME_Container_i.hxx index 9f67a52ce..4acef01d2 100644 --- a/src/Container/SALOME_Container_i.hxx +++ b/src/Container/SALOME_Container_i.hxx @@ -47,6 +47,7 @@ #include #include #include +#include class SALOME_NamingService_Container_Abstract; @@ -55,7 +56,8 @@ class CONTAINER_EXPORT Abstract_Engines_Container_i : public virtual POA_Engines { public: Abstract_Engines_Container_i(); - Abstract_Engines_Container_i(CORBA::ORB_ptr orb, + Abstract_Engines_Container_i(const std::string& pyContainerClsName, + CORBA::ORB_ptr orb, PortableServer::POA_ptr poa, char *containerName, int argc, char *argv[], @@ -65,6 +67,8 @@ public: virtual bool isSSLMode() const = 0; + std::string getPyContainerClassName() const { return _py_container_name; } + // --- CORBA methods virtual bool load_component_Library(const char *componentName, CORBA::String_out reason); @@ -77,6 +81,22 @@ public: void override_environment( const Engines::FieldsDict& env ) override; Engines::FieldsDict *get_os_environment() override; + + void set_big_obj_on_disk_threshold(CORBA::Long thresholdInByte) override; + + void set_big_obj_on_disk_directory(const char *directory) override; + + void set_number_of_retry(CORBA::Long nbRetry) override; + + void set_directory_for_replay_files(const char *directory) override; + + void set_startup_code(const char *codeAtStartUp) override; + + char *get_startup_code() override; + + void addLogFileNameGroup(const Engines::vectorOfString& groupOfLogFileNames) override; + + Engines::vectorOfVectorOfString *getAllLogFileNameGroups() override; void execute_python_code(const char *code) override; @@ -187,6 +207,8 @@ protected: std::string _logfilename; std::string _localfilename; std::string _load_script; + std::string _py_container_name; + std::string _code_at_startup; CORBA::ORB_var _orb; PortableServer::POA_var _poa; PortableServer::ObjectId *_id; @@ -199,6 +221,7 @@ protected: Utils_Mutex _mutexForDftPy; std::list _tmp_files; Engines::fileTransfer_var _fileTransfer; + std::vector< std::vector > _groups_of_log_files; int _argc; char **_argv; @@ -206,6 +229,12 @@ protected: bool _isServantAloneInProcess; }; +constexpr char PY_CONTAINER_CLS_NAME_IN_PROCESS[] = "SALOME_Container_i"; +constexpr char PY_CONTAINER_CLS_NAME_OUT_PROCESS_NO_REPLAY[] = "SALOME_Container_OutOfProcess_i"; +constexpr char PY_CONTAINER_CLS_NAME_OUT_PROCESS_WITH_REPLAY[] = "SALOME_Container_OutOfProcess_Replay_i"; +constexpr char PY_CONTAINER_CLS_NAME_OUT_PROCESS_NO_REPLAY_FT[] = "SALOME_Container_OutOfProcess_FT_i"; +constexpr char PY_CONTAINER_CLS_NAME_OUT_PROCESS_WITH_REPLAY_FT[] = "SALOME_Container_OutOfProcess_Replay_FT_i"; + class CONTAINER_EXPORT Engines_Container_i : public Abstract_Engines_Container_i { public: @@ -216,30 +245,90 @@ public: int argc, char *argv[], SALOME_NamingService_Container_Abstract *ns = nullptr, bool isServantAloneInProcess = true) : - Abstract_Engines_Container_i(orb, poa, containerName, argc, argv, ns, isServantAloneInProcess) {} + Abstract_Engines_Container_i(PY_CONTAINER_CLS_NAME_IN_PROCESS, orb, poa, containerName, argc, argv, ns, isServantAloneInProcess) {} bool isSSLMode() const override { return false; } }; -class CONTAINER_EXPORT Engines_Container_SSL_i : public Abstract_Engines_Container_i +class CONTAINER_EXPORT Abstract_Engines_Container_SSL_i : public Abstract_Engines_Container_i { public: - Engines_Container_SSL_i(); - Engines_Container_SSL_i(CORBA::ORB_ptr orb, + Abstract_Engines_Container_SSL_i(const std::string& pyContainerClsName, + CORBA::ORB_ptr orb, PortableServer::POA_ptr poa, char *containerName, int argc, char *argv[], SALOME_NamingService_Container_Abstract *ns = nullptr, bool isServantAloneInProcess = true) : - Abstract_Engines_Container_i(orb, poa, containerName, argc, argv, ns, isServantAloneInProcess) {} + Abstract_Engines_Container_i(pyContainerClsName, orb, poa, containerName, argc, argv, ns, isServantAloneInProcess) {} bool isSSLMode() const override { return true; } }; +class CONTAINER_EXPORT Engines_Container_SSL_i : public Abstract_Engines_Container_SSL_i +{ +public: + Engines_Container_SSL_i(CORBA::ORB_ptr orb, + PortableServer::POA_ptr poa, + char *containerName, + int argc, char *argv[], + SALOME_NamingService_Container_Abstract *ns = nullptr, + bool isServantAloneInProcess = true) : + Abstract_Engines_Container_SSL_i(PY_CONTAINER_CLS_NAME_IN_PROCESS, orb, poa, containerName, argc, argv, ns, isServantAloneInProcess) {} +}; + +class CONTAINER_EXPORT Engines_Container_SSL_OutOfProcess_i : public Abstract_Engines_Container_SSL_i +{ +public: + Engines_Container_SSL_OutOfProcess_i(CORBA::ORB_ptr orb, + PortableServer::POA_ptr poa, + char *containerName, + int argc, char *argv[], + SALOME_NamingService_Container_Abstract *ns = nullptr, + bool isServantAloneInProcess = true) : + Abstract_Engines_Container_SSL_i(PY_CONTAINER_CLS_NAME_OUT_PROCESS_NO_REPLAY, orb, poa, containerName, argc, argv, ns, isServantAloneInProcess) {} +}; + +class CONTAINER_EXPORT Engines_Container_SSL_OutOfProcess_Replay_i : public Abstract_Engines_Container_SSL_i +{ +public: + Engines_Container_SSL_OutOfProcess_Replay_i(CORBA::ORB_ptr orb, + PortableServer::POA_ptr poa, + char *containerName, + int argc, char *argv[], + SALOME_NamingService_Container_Abstract *ns = nullptr, + bool isServantAloneInProcess = true) : + Abstract_Engines_Container_SSL_i(PY_CONTAINER_CLS_NAME_OUT_PROCESS_WITH_REPLAY, orb, poa, containerName, argc, argv, ns, isServantAloneInProcess) {} +}; + +class CONTAINER_EXPORT Engines_Container_SSL_OutOfProcess_FT_i : public Abstract_Engines_Container_SSL_i +{ +public: + Engines_Container_SSL_OutOfProcess_FT_i(CORBA::ORB_ptr orb, + PortableServer::POA_ptr poa, + char *containerName, + int argc, char *argv[], + SALOME_NamingService_Container_Abstract *ns = nullptr, + bool isServantAloneInProcess = true) : + Abstract_Engines_Container_SSL_i(PY_CONTAINER_CLS_NAME_OUT_PROCESS_NO_REPLAY_FT, orb, poa, containerName, argc, argv, ns, isServantAloneInProcess) {} +}; + +class CONTAINER_EXPORT Engines_Container_SSL_OutOfProcess_Replay_FT_i : public Abstract_Engines_Container_SSL_i +{ +public: + Engines_Container_SSL_OutOfProcess_Replay_FT_i(CORBA::ORB_ptr orb, + PortableServer::POA_ptr poa, + char *containerName, + int argc, char *argv[], + SALOME_NamingService_Container_Abstract *ns = nullptr, + bool isServantAloneInProcess = true) : + Abstract_Engines_Container_SSL_i(PY_CONTAINER_CLS_NAME_OUT_PROCESS_WITH_REPLAY_FT, orb, poa, containerName, argc, argv, ns, isServantAloneInProcess) {} +}; + /*! * Methods to be used in SSL mode to skip NS. */ namespace KERNEL { - CONTAINER_EXPORT Engines_Container_SSL_i *getContainerSA(); + CONTAINER_EXPORT Abstract_Engines_Container_SSL_i *getContainerSA(); CONTAINER_EXPORT Engines::Container_var getContainerRefSA(); } // namespace KERNEL