GEOM_IMeasureOperations_i.hh
GEOM_IGroupOperations_i.hh
GEOM_Gen_i.hh
+ GEOM_Gen_Session_i.hh
+ GEOM_Gen_No_Session_i.hh
GEOM_GEOM_I.hxx
GEOM_wrap.hxx
)
GEOM_IGroupOperations_i.cc
GEOM_IFieldOperations_i.cc
GEOM_Gen_i.cc
+ GEOM_Gen_Session_i.cc
+ GEOM_Gen_No_Session_i.cc
GEOM_DumpPython.cc
)
--- /dev/null
+// 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 "GEOM_Gen_No_Session_i.hh"
+
+#include "SALOMEDS_Study_i.hxx"
+
+GEOM_Gen_No_Session_i::GEOM_Gen_No_Session_i(CORBA::ORB_ptr orb,
+ PortableServer::POA_ptr poa,
+ PortableServer::ObjectId *contId,
+ const char *instanceName,
+ const char *interfaceName):GEOM_Gen_i(orb,poa,contId,instanceName,interfaceName,false)
+{
+}
+
+SALOMEDS::Study_var GEOM_Gen_No_Session_i::getStudyServant()
+{
+ return SALOMEDS::Study::_duplicate(KERNEL::getStudyServantSA());
+}
--- /dev/null
+// 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 "GEOM_Gen_i.hh"
+
+class GEOM_I_EXPORT GEOM_Gen_No_Session_i : public GEOM_Gen_i
+{
+ public:
+ GEOM_Gen_No_Session_i(CORBA::ORB_ptr orb,
+ PortableServer::POA_ptr poa,
+ PortableServer::ObjectId * contId,
+ const char *instanceName,
+ const char *interfaceName);
+
+ SALOMEDS::Study_var getStudyServant() override;
+};
--- /dev/null
+// 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 "GEOM_Gen_Session_i.hh"
+
+GEOM_Gen_Session_i::GEOM_Gen_Session_i(CORBA::ORB_ptr orb,
+ PortableServer::POA_ptr poa,
+ PortableServer::ObjectId *contId,
+ const char *instanceName,
+ const char *interfaceName):GEOM_Gen_i(orb,poa,contId,instanceName,interfaceName,true)
+{
+ name_service = new SALOME_NamingService(_orb);
+}
+
+GEOM_Gen_Session_i::~GEOM_Gen_Session_i()
+{
+ delete name_service;
+}
+
+void GEOM_Gen_Session_i::register_name(char * name)
+{
+ GEOM::GEOM_Gen_var g = _this();
+ name_service->Register(g, name);
+}
+
+SALOMEDS::Study_var GEOM_Gen_Session_i::getStudyServant()
+{
+ static SALOMEDS::Study_var aStudy;
+ if(CORBA::is_nil(aStudy))
+ {
+ CORBA::Object_ptr anObject = name_service->Resolve("/Study");
+ aStudy = SALOMEDS::Study::_narrow(anObject);
+ }
+ return aStudy;
+}
+
+extern "C"
+{
+ GEOM_I_EXPORT PortableServer::ObjectId* GEOMEngine_factory(CORBA::ORB_ptr orb,
+ PortableServer::POA_ptr poa,
+ PortableServer::ObjectId* contId,
+ const char* instanceName,
+ const char* interfaceName)
+ {
+ GEOM_Gen_Session_i* myGEOM_Gen_i = new GEOM_Gen_Session_i(orb, poa, contId, instanceName, interfaceName);
+ auto id = poa->activate_object(myGEOM_Gen_i);
+ myGEOM_Gen_i->setId(id);
+ return id;
+ }
+}
--- /dev/null
+// 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 "GEOM_Gen_i.hh"
+
+class GEOM_I_EXPORT GEOM_Gen_Session_i : public GEOM_Gen_i
+{
+public:
+ GEOM_Gen_Session_i(CORBA::ORB_ptr orb,
+ PortableServer::POA_ptr poa,
+ PortableServer::ObjectId * contId,
+ const char *instanceName,
+ const char *interfaceName);
+ ~GEOM_Gen_Session_i();
+ void register_name(char * name);
+ SALOMEDS::Study_var getStudyServant() override;
+ SALOME_NamingService *GetNS() { return name_service; }
+private:
+ SALOME_NamingService *name_service = nullptr;
+};
+
#include <SALOMEDS_Tool.hxx>
#include <SALOMEDS_wrap.hxx>
-#include "SALOMEDS_Study_i.hxx"
#include <Basics_DirUtils.hxx>
#include <Basics_Utils.hxx>
PortableServer::ObjectId* contId,
const char* instanceName,
const char* interfaceName,
- bool withRegistry,
- bool withNS) :
+ bool withRegistry) :
Engines_Component_i(orb, poa, contId, instanceName, interfaceName, false, withRegistry)
{
_thisObj = this;
- _id = _poa->activate_object(_thisObj);
- if(withNS)
- name_service = new SALOME_NamingService(_orb);
_impl = new ::GEOMImpl_Gen;
// purpose : destructor
//============================================================================
GEOM_Gen_i::~GEOM_Gen_i() {
- delete name_service;
delete _impl;
- std::map<std::string, GEOM_GenericOperationsCreator*>::const_iterator it;
- for ( it = myOpCreatorMap.begin(); it != myOpCreatorMap.end(); ++it)
+ for (auto it = myOpCreatorMap.cbegin(); it != myOpCreatorMap.cend(); ++it)
delete (*it).second;
}
return aParts._retn();
}
-//============================================================================
-// function : register()
-// purpose : register 'name' in 'name_service'
-//============================================================================
-void GEOM_Gen_i::register_name(char * name)
-{
- GEOM::GEOM_Gen_var g = _this();
- name_service->Register(g, name);
-}
-
-//============================================================================
-// function : getStudyServant()
-// purpose : Get Study
-//============================================================================
-SALOMEDS::Study_var GEOM_Gen_i::getStudyServant()
-{
- return SALOMEDS::Study::_duplicate(KERNEL::getStudyServantSA());
-}
-
//============================================================================
// function : findOrCreateComponent()
// purpose : Find root study component; create if it does not exist
includeSubObjects( aSubEntryStr, aSelected, aParents, aChildren, anOthers );
}
}
-//=====================================================================================
-// EXPORTED METHODS
-//=====================================================================================
-extern "C"
-{
- /*
- GEOM_I_EXPORT
- PortableServer::ObjectId* GEOMEngine_factory(CORBA::ORB*, PortableServer::POA*, PortableServer::ObjectId*, const char*, const char*);
- */
-
- GEOM_I_EXPORT
- PortableServer::ObjectId* GEOMEngine_factory(CORBA::ORB_ptr orb,
- PortableServer::POA_ptr poa,
- PortableServer::ObjectId* contId,
- const char* instanceName,
- const char* interfaceName)
- {
- GEOM_Gen_i* myGEOM_Gen_i = new GEOM_Gen_i(orb, poa, contId, instanceName, interfaceName);
- return myGEOM_Gen_i->getId();
- }
-}
+
PortableServer::ObjectId * contId,
const char *instanceName,
const char *interfaceName,
- bool withRegistry = true,
- bool withNS = true);
+ bool withRegistry = true);
// destructor, doing nothing (for now)
virtual ~GEOM_Gen_i();
- // generic method to be put in a super class
- void register_name(char * name);
-
// Get ORB object
CORBA::ORB_ptr GetORB() { return CORBA::ORB::_duplicate(_orb); }
- // Get Naming Service object
- SALOME_NamingService* GetNS() { return name_service; }
-
// Get Study
- SALOMEDS::Study_var getStudyServant();
+ virtual SALOMEDS::Study_var getStudyServant() = 0;
//-----------------------------------------------------------------------//
// Inherited methods from SALOMEDS::Driver //
private:
::GEOMImpl_Gen* _impl;
- SALOME_NamingService * name_service = nullptr;
char * _name;
// plugin operations managing
#include "GEOM_IOperations_i.hh"
#include "GEOM_Engine.hxx"
-#include "GEOM_Gen_i.hh"
+#include "GEOM_Gen_Session_i.hh"
#include <SALOME_NamingService.hxx>
#include "utilities.h"
if (!CORBA::is_nil (theObj)) {
// Cast _engine to GEOM_Gen_i type.
PortableServer::Servant aServant = myPOA->reference_to_servant(_engine.in());
- GEOM_Gen_i *anEngine = dynamic_cast<GEOM_Gen_i *>(aServant);
+ GEOM_Gen_Session_i *anEngine = dynamic_cast<GEOM_Gen_Session_i *>(aServant);
if (anEngine) {
SALOME_NamingService *aNameService = anEngine->GetNS();
#include "GeomHelper.h"
-#include "GEOM_Gen_i.hh"
+#include "GEOM_Gen_No_Session_i.hh"
#include "SALOME_Container_i.hxx"
#include "SALOME_KernelServices.hxx"
//
pman->activate();
//
- GEOM_Gen_i *servant = new GEOM_Gen_i(orb,poa,const_cast<PortableServer::ObjectId*>(&conId.in()),"GEOM_inst_2","GEOM",false,false);
- PortableServer::ObjectId *zeId = servant->getId();
+ GEOM_Gen_No_Session_i *servant = new GEOM_Gen_No_Session_i(orb,poa,const_cast<PortableServer::ObjectId*>(&conId.in()),"GEOM_inst_2","GEOM");
+ PortableServer::ObjectId *zeId = poa->activate_object(servant);
+ servant->setId(zeId);
CORBA::Object_var zeRef = poa->id_to_reference(*zeId);
char *interfaceName = servant->interfaceName();
std::string interfaceNameCpp(interfaceName);