From 8bf54d9549206989eb05e51092da5938f364f960 Mon Sep 17 00:00:00 2001 From: Anthony Geay Date: Mon, 8 Feb 2021 22:03:44 +0100 Subject: [PATCH 1/1] On the road to HOMARD SSL --- src/CMakeLists.txt | 1 + src/HOMARD_I/HOMARD_Gen_i.cxx | 5 +- src/HOMARD_I/HOMARD_Gen_i.hxx | 3 +- src/HOMARD_I/HOMARD_Gen_i_No_Session.cxx | 3 +- src/HOMARD_I/HOMARD_Gen_i_Session.cxx | 3 +- src/SalomeSessionless/CMakeLists.txt | 49 ++++++++++++++++++ src/SalomeSessionless/HOMARDHelper.cxx | 50 +++++++++++++++++++ src/SalomeSessionless/HOMARDHelper.h | 24 +++++++++ src/SalomeSessionless/HOMARDHelper.i | 34 +++++++++++++ .../HOMARD_SalomeSessionless.py | 28 +++++++++++ 10 files changed, 195 insertions(+), 5 deletions(-) create mode 100644 src/SalomeSessionless/CMakeLists.txt create mode 100644 src/SalomeSessionless/HOMARDHelper.cxx create mode 100644 src/SalomeSessionless/HOMARDHelper.h create mode 100644 src/SalomeSessionless/HOMARDHelper.i create mode 100644 src/SalomeSessionless/HOMARD_SalomeSessionless.py diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 28aaa4b7..15aa8edc 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -23,6 +23,7 @@ SET(SUBDIRS_COMMON HOMARD HOMARD_I + SalomeSessionless HOMARDGUI HOMARD_SWIG FrontTrack diff --git a/src/HOMARD_I/HOMARD_Gen_i.cxx b/src/HOMARD_I/HOMARD_Gen_i.cxx index a42a858c..9e6b757b 100644 --- a/src/HOMARD_I/HOMARD_Gen_i.cxx +++ b/src/HOMARD_I/HOMARD_Gen_i.cxx @@ -92,8 +92,9 @@ HOMARD_Gen_i::HOMARD_Gen_i( CORBA::ORB_ptr orb, PortableServer::POA_ptr poa, PortableServer::ObjectId * contId, const char *instanceName, - const char *interfaceName) : -Engines_Component_i(orb, poa, contId, instanceName, interfaceName) + const char *interfaceName, + bool checkNS) : +Engines_Component_i(orb, poa, contId, instanceName, interfaceName, false, checkNS) { MESSAGE("constructor de HOMARD_Gen_i"); _thisObj = this; diff --git a/src/HOMARD_I/HOMARD_Gen_i.hxx b/src/HOMARD_I/HOMARD_Gen_i.hxx index 0b6ed288..423dea84 100644 --- a/src/HOMARD_I/HOMARD_Gen_i.hxx +++ b/src/HOMARD_I/HOMARD_Gen_i.hxx @@ -50,7 +50,8 @@ public: PortableServer::POA_ptr poa, PortableServer::ObjectId* contId, const char* instanceName, - const char* interfaceName ); + const char* interfaceName, + bool checkNS); virtual ~HOMARD_Gen_i(); diff --git a/src/HOMARD_I/HOMARD_Gen_i_No_Session.cxx b/src/HOMARD_I/HOMARD_Gen_i_No_Session.cxx index bfeb38b1..3cff48e6 100644 --- a/src/HOMARD_I/HOMARD_Gen_i_No_Session.cxx +++ b/src/HOMARD_I/HOMARD_Gen_i_No_Session.cxx @@ -20,7 +20,8 @@ #include "HOMARD_Gen_i_No_Session.hxx" #include "SALOMEDS_Study_i.hxx" -HOMARD_Gen_i_No_Session::HOMARD_Gen_i_No_Session( CORBA::ORB_ptr orb, PortableServer::POA_ptr poa, PortableServer::ObjectId* contId, const char* instanceName, const char* interfaceName ):HOMARD_Gen_i(orb,poa,contId,instanceName,interfaceName) +HOMARD_Gen_i_No_Session::HOMARD_Gen_i_No_Session( CORBA::ORB_ptr orb, PortableServer::POA_ptr poa, PortableServer::ObjectId* contId, const char* instanceName, const char* interfaceName ): +HOMARD_Gen_i(orb,poa,contId,instanceName,interfaceName,false) { myStudy = KERNEL::getStudyServantSA(); } diff --git a/src/HOMARD_I/HOMARD_Gen_i_Session.cxx b/src/HOMARD_I/HOMARD_Gen_i_Session.cxx index 0b152aff..52e5b8c8 100644 --- a/src/HOMARD_I/HOMARD_Gen_i_Session.cxx +++ b/src/HOMARD_I/HOMARD_Gen_i_Session.cxx @@ -21,7 +21,8 @@ #include "SALOMEDS_Study_i.hxx" #include "SALOME_KernelServices.hxx" -HOMARD_Gen_i_Session::HOMARD_Gen_i_Session( CORBA::ORB_ptr orb, PortableServer::POA_ptr poa, PortableServer::ObjectId* contId, const char* instanceName, const char* interfaceName ):HOMARD_Gen_i(orb,poa,contId,instanceName,interfaceName) +HOMARD_Gen_i_Session::HOMARD_Gen_i_Session( CORBA::ORB_ptr orb, PortableServer::POA_ptr poa, PortableServer::ObjectId* contId, const char* instanceName, const char* interfaceName ): +HOMARD_Gen_i(orb,poa,contId,instanceName,interfaceName,true) { myStudy = SALOMEDS::Study::_duplicate(KERNEL::getStudyServant()); } diff --git a/src/SalomeSessionless/CMakeLists.txt b/src/SalomeSessionless/CMakeLists.txt new file mode 100644 index 00000000..5061a1e9 --- /dev/null +++ b/src/SalomeSessionless/CMakeLists.txt @@ -0,0 +1,49 @@ +# Copyright (C) 2021 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 +# + +include(${SWIG_USE_FILE}) + +include_directories( + ${KERNEL_INCLUDE_DIRS} + ${PROJECT_SOURCE_DIR}/src/HOMARD_I + ${PROJECT_SOURCE_DIR}/src/HOMARD + ${PROJECT_SOURCE_DIR}/src/FrontTrack + ${CMAKE_CURRENT_SOURCE_DIR} + ${PROJECT_BINARY_DIR}/idl +) + +SET(_bin_SCRIPTS HOMARD_SalomeSessionless.py ) + +SALOME_INSTALL_SCRIPTS("${_bin_SCRIPTS}" ${SALOME_INSTALL_PYTHON} DEF_PERMS) + +SET(HOMARDHelper_HEADERS HOMARDHelper.h HOMARDHelper.i) +SET(HOMARDHelper_SOURCES HOMARDHelper.cxx ${HOMARDHelper_HEADERS}) +SET_SOURCE_FILES_PROPERTIES(HOMARDHelper.i PROPERTIES CPLUSPLUS ON) +SET_SOURCE_FILES_PROPERTIES(HOMARDHelper.i PROPERTIES SWIG_FLAGS "-py3") +SET_SOURCE_FILES_PROPERTIES(HOMARDHelper_wrap.cpp PROPERTIES COMPILE_FLAGS "-DHAVE_CONFIG_H") +SET(_swig_SCRIPTS ${CMAKE_CURRENT_BINARY_DIR}/HOMARDHelper.py ) +IF(${CMAKE_VERSION} VERSION_LESS "3.8.0") + SWIG_ADD_MODULE(HOMARDHelper python ${HOMARDHelper_SOURCES}) +ELSE() + SWIG_ADD_LIBRARY(HOMARDHelper LANGUAGE python SOURCES ${HOMARDHelper_SOURCES}) +ENDIF() +SWIG_LINK_LIBRARIES(HOMARDHelper ${PYTHON_LIBRARIES} ${PLATFORM_LIBS} HOMARDEngine ) +install(TARGETS _HOMARDHelper DESTINATION ${SALOME_INSTALL_LIBS}) +install(FILES ${HOMARDHelper_HEADERS} DESTINATION ${SALOME_INSTALL_HEADERS}) +SALOME_INSTALL_SCRIPTS("${_swig_SCRIPTS}" ${SALOME_INSTALL_BINS} EXTRA_DPYS "${SWIG_MODULE_HOMARDHelper_REAL_NAME}") diff --git a/src/SalomeSessionless/HOMARDHelper.cxx b/src/SalomeSessionless/HOMARDHelper.cxx new file mode 100644 index 00000000..c4e92e3c --- /dev/null +++ b/src/SalomeSessionless/HOMARDHelper.cxx @@ -0,0 +1,50 @@ +// Copyright (C) 2021 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 +// + +#include "HOMARDHelper.h" + +#include "HOMARD_Gen_i_No_Session.hxx" +#include "SALOME_Container_i.hxx" +#include "SALOME_KernelServices.hxx" + +#include + +std::string BuildHOMARDInstanceInternal() +{ + CORBA::ORB_var orb; + { int argc(0); orb = CORBA::ORB_init(argc,nullptr); } + CORBA::Object_var obj = orb->resolve_initial_references("RootPOA"); + PortableServer::POA_var poa = PortableServer::POA::_narrow(obj); + PortableServer::POAManager_var pman = poa->the_POAManager(); + PortableServer::ObjectId_var conId; + // + { + char *argv[4] = {"Container","FactoryServer","HOMARD",nullptr}; + Engines_Container_i *cont = new Engines_Container_i(orb,poa,"FactoryServer",2,argv,false,false); + conId = poa->activate_object(cont); + } + // + pman->activate(); + // + HOMARD_Gen_i_No_Session *servant = new HOMARD_Gen_i_No_Session(orb,poa,const_cast(&conId.in()),"HOMARD_inst_2","HOMARD"); + PortableServer::ObjectId *zeId = servant->getId(); + CORBA::Object_var zeRef = poa->id_to_reference(*zeId); + CORBA::String_var ior = orb->object_to_string(zeRef); + return std::string(ior.in()); +} diff --git a/src/SalomeSessionless/HOMARDHelper.h b/src/SalomeSessionless/HOMARDHelper.h new file mode 100644 index 00000000..134333cd --- /dev/null +++ b/src/SalomeSessionless/HOMARDHelper.h @@ -0,0 +1,24 @@ +// Copyright (C) 2021 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 +// + +#pragma once + +#include + +std::string BuildHOMARDInstanceInternal(); diff --git a/src/SalomeSessionless/HOMARDHelper.i b/src/SalomeSessionless/HOMARDHelper.i new file mode 100644 index 00000000..852519f1 --- /dev/null +++ b/src/SalomeSessionless/HOMARDHelper.i @@ -0,0 +1,34 @@ +// Copyright (C) 2021 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 +// + +%module HOMARDHelper + +%include "std_string.i" + +%{ +#include "HOMARDHelper.h" +%} + +%inline +{ + std::string BuildHOMARDInstance() + { + return BuildHOMARDInstanceInternal(); + } +} diff --git a/src/SalomeSessionless/HOMARD_SalomeSessionless.py b/src/SalomeSessionless/HOMARD_SalomeSessionless.py new file mode 100644 index 00000000..d9f1dd88 --- /dev/null +++ b/src/SalomeSessionless/HOMARD_SalomeSessionless.py @@ -0,0 +1,28 @@ +# -*- coding: iso-8859-1 -*- +# Copyright (C) 2021 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 +# + +def buildInstance(orb): + import HOMARDHelper + homard_ior = HOMARDHelper.BuildHOMARDInstance() + import HOMARD + import CORBA + orb=CORBA.ORB_init(['']) + homardInst = orb.string_to_object(homard_ior) + return homardInst, orb -- 2.30.2