#include <map>
#include <list>
#include <string>
+#include <vector>
class SALOME_NamingService_Container_Abstract;
{
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[],
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);
void override_environment( const Engines::FieldsDict& env ) override;
Engines::FieldsDict *get_os_environment() override;
+
+ void addLogFileNameGroup(const Engines::vectorOfString& groupOfLogFileNames) override;
+
+ Engines::vectorOfVectorOfString *getAllLogFileNameGroups() override;
void execute_python_code(const char *code) override;
std::string _logfilename;
std::string _localfilename;
std::string _load_script;
+ std::string _py_container_name;
CORBA::ORB_var _orb;
PortableServer::POA_var _poa;
PortableServer::ObjectId *_id;
Utils_Mutex _mutexForDftPy;
std::list<std::string> _tmp_files;
Engines::fileTransfer_var _fileTransfer;
+ std::vector< std::vector<std::string> > _groups_of_log_files;
int _argc;
char **_argv;
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";
+
+
class CONTAINER_EXPORT Engines_Container_i : public Abstract_Engines_Container_i
{
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) {}
+};
+
/*!
* 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