From e56eefbad39e87594ae84e543b53a3ffb0842c6c Mon Sep 17 00:00:00 2001 From: Anthony Geay Date: Thu, 21 Jan 2021 17:28:14 +0100 Subject: [PATCH] WIP --- src/SMESH_I/SMESH_Gen_No_Session_i.cxx | 38 +++++++++++++++++++ src/SMESH_I/SMESH_Gen_No_Session_i.hxx | 33 ++++++++++++++++ src/SMESH_I/SMESH_Gen_Session_i.cxx | 52 ++++++++++++++++++++++++++ src/SMESH_I/SMESH_Gen_Session_i.hxx | 33 ++++++++++++++++ src/SMESH_I/SMESH_Gen_i.cxx | 17 --------- src/SMESH_I/SMESH_Gen_i.hxx | 5 ++- 6 files changed, 159 insertions(+), 19 deletions(-) create mode 100644 src/SMESH_I/SMESH_Gen_No_Session_i.cxx create mode 100644 src/SMESH_I/SMESH_Gen_No_Session_i.hxx create mode 100644 src/SMESH_I/SMESH_Gen_Session_i.cxx create mode 100644 src/SMESH_I/SMESH_Gen_Session_i.hxx diff --git a/src/SMESH_I/SMESH_Gen_No_Session_i.cxx b/src/SMESH_I/SMESH_Gen_No_Session_i.cxx new file mode 100644 index 000000000..3c216192f --- /dev/null +++ b/src/SMESH_I/SMESH_Gen_No_Session_i.cxx @@ -0,0 +1,38 @@ +// Copyright (C) 2021 CEA/DEN, EDF R&D +// +// 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 "SMESH_Gen_No_Session_i.hxx" + +#include "SALOME_KernelServices.hxx" + +SMESH_Gen_No_Session_i::SMESH_Gen_No_Session_i( CORBA::ORB_ptr orb, + PortableServer::POA_ptr poa, + PortableServer::ObjectId* contId, + const char* instanceName, + const char* interfaceName):SMESH_Gen_i(orb,poa,contId,instanceName,interfaceName,false) +{ + +} + +GEOM::GEOM_Gen_var SMESH_Gen_No_Session_i::GetGeomEngine( bool isShaper ) +{ + CORBA::Object_var temp = KERNEL::RetrieveCompo(isShaper ? "SHAPERSTUDY" : "GEOM"); + myGeomGen = GEOM::GEOM_Gen::_narrow( temp ); + return myGeomGen; +} diff --git a/src/SMESH_I/SMESH_Gen_No_Session_i.hxx b/src/SMESH_I/SMESH_Gen_No_Session_i.hxx new file mode 100644 index 000000000..f3fd462fb --- /dev/null +++ b/src/SMESH_I/SMESH_Gen_No_Session_i.hxx @@ -0,0 +1,33 @@ +// Copyright (C) 2021 CEA/DEN, EDF R&D +// +// 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 "SMESH_Gen_i.hxx" + +class SMESH_I_EXPORT SMESH_Gen_No_Session_i : public SMESH_Gen_i +{ +public: + SMESH_Gen_No_Session_i( CORBA::ORB_ptr orb, + PortableServer::POA_ptr poa, + PortableServer::ObjectId* contId, + const char* instanceName, + const char* interfaceName); + GEOM::GEOM_Gen_var GetGeomEngine( bool isShaper ) override; +}; diff --git a/src/SMESH_I/SMESH_Gen_Session_i.cxx b/src/SMESH_I/SMESH_Gen_Session_i.cxx new file mode 100644 index 000000000..a9b4c6bb0 --- /dev/null +++ b/src/SMESH_I/SMESH_Gen_Session_i.cxx @@ -0,0 +1,52 @@ +// Copyright (C) 2021 CEA/DEN, EDF R&D +// +// 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 "SMESH_Gen_Session_i.hxx" + +#include "SALOME_LifeCycleCORBA.hxx" + + +SMESH_Gen_Session_i::SMESH_Gen_Session_i( CORBA::ORB_ptr orb, + PortableServer::POA_ptr poa, + PortableServer::ObjectId* contId, + const char* instanceName, + const char* interfaceName):SMESH_Gen_i(orb,poa,contId,instanceName,interfaceName,true) +{ + +} + +GEOM::GEOM_Gen_var SMESH_Gen_Session_i::GetGeomEngine( bool isShaper ) +{ + Engines::EngineComponent_ptr temp = GetLCC()->FindOrLoad_Component( isShaper ? "FactoryServer" : "FactoryServer", isShaper ? "SHAPERSTUDY" : "GEOM" ); + myGeomGen = GEOM::GEOM_Gen::_narrow( temp ); + return myGeomGen; +} + +extern "C" +{ SMESH_I_EXPORT + PortableServer::ObjectId* SMESHEngine_factory( CORBA::ORB_ptr orb, + PortableServer::POA_ptr poa, + PortableServer::ObjectId* contId, + const char* instanceName, + const char* interfaceName ) + { + SMESH_Gen_Session_i* aSMESHGen = new SMESH_Gen_Session_i(orb, poa, contId, instanceName, interfaceName); + return aSMESHGen->getId() ; + } +} diff --git a/src/SMESH_I/SMESH_Gen_Session_i.hxx b/src/SMESH_I/SMESH_Gen_Session_i.hxx new file mode 100644 index 000000000..464d13d0e --- /dev/null +++ b/src/SMESH_I/SMESH_Gen_Session_i.hxx @@ -0,0 +1,33 @@ +// Copyright (C) 2021 CEA/DEN, EDF R&D +// +// 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 "SMESH_Gen_i.hxx" + +class SMESH_I_EXPORT SMESH_Gen_Session_i : public SMESH_Gen_i +{ +public: + SMESH_Gen_Session_i( CORBA::ORB_ptr orb, + PortableServer::POA_ptr poa, + PortableServer::ObjectId* contId, + const char* instanceName, + const char* interfaceName); + GEOM::GEOM_Gen_var GetGeomEngine( bool isShaper ) override; +}; diff --git a/src/SMESH_I/SMESH_Gen_i.cxx b/src/SMESH_I/SMESH_Gen_i.cxx index 6bc1fbddb..23f735111 100644 --- a/src/SMESH_I/SMESH_Gen_i.cxx +++ b/src/SMESH_I/SMESH_Gen_i.cxx @@ -49,8 +49,6 @@ #include #include -#include "SALOME_KernelServices.hxx" - #ifdef WIN32 #include #include @@ -281,21 +279,6 @@ SALOME_LifeCycleCORBA* SMESH_Gen_i::GetLCC() */ //============================================================================= -GEOM::GEOM_Gen_var SMESH_Gen_i::GetGeomEngine( bool isShaper ) -{ - CORBA::Object_var temp = KERNEL::RetrieveCompo(isShaper ? "SHAPERSTUDY" : "GEOM"); - myGeomGen = GEOM::GEOM_Gen::_narrow( temp ); - return myGeomGen; -} - -//============================================================================= -/*! - * GetGeomEngine [ static ] - * - * Get GEOM::GEOM_Gen reference - */ -//============================================================================= - GEOM::GEOM_Gen_var SMESH_Gen_i::GetGeomEngine( GEOM::GEOM_Object_ptr go ) { GEOM::GEOM_Gen_ptr gen = GEOM::GEOM_Gen::_nil(); diff --git a/src/SMESH_I/SMESH_Gen_i.hxx b/src/SMESH_I/SMESH_Gen_i.hxx index 866b8c362..f2c4c4801 100644 --- a/src/SMESH_I/SMESH_Gen_i.hxx +++ b/src/SMESH_I/SMESH_Gen_i.hxx @@ -107,7 +107,7 @@ public: // Get SALOME_LifeCycleCORBA object static SALOME_LifeCycleCORBA* GetLCC(); // Retrieve and get GEOM engine reference - static GEOM::GEOM_Gen_var GetGeomEngine( bool isShaper ); + virtual GEOM::GEOM_Gen_var GetGeomEngine( bool isShaper ) = 0; static GEOM::GEOM_Gen_var GetGeomEngine( GEOM::GEOM_Object_ptr ); // Get object of the CORBA reference static PortableServer::ServantBase_var GetServant( CORBA::Object_ptr theObject ); @@ -636,8 +636,9 @@ private: const TopoDS_Shape& Shape, double* Tolerance = NULL); -private: +protected: static GEOM::GEOM_Gen_var myGeomGen; +private: static CORBA::ORB_var myOrb; // ORB reference static PortableServer::POA_var myPoa; // POA reference static SALOME_NamingService* myNS; // Naming Service -- 2.39.2