]> SALOME platform Git repositories - modules/kernel.git/commitdiff
Salome HOME
CCAR: change implementation of getContainerName to avoid lock with python container
authorcaremoli <caremoli>
Wed, 9 Dec 2009 12:59:08 +0000 (12:59 +0000)
committercaremoli <caremoli>
Wed, 9 Dec 2009 12:59:08 +0000 (12:59 +0000)
src/Container/Component_i.cxx
src/Container/SALOME_Component_i.hxx

index 66d3cd22a5c65a9cf39c055ef4b503624c35fd47..51e5b02d69e90371c158f7d41e85f6d968dd8e20 100644 (file)
@@ -114,6 +114,7 @@ Engines_Component_i::Engines_Component_i(CORBA::ORB_ptr orb,
   _contId = contId ;
   CORBA::Object_var o = _poa->id_to_reference(*contId); // container ior...
   _container=Engines::Container::_narrow(o);
+  setContainerName();
 
   if(regist)
     {
@@ -164,6 +165,7 @@ Engines_Component_i::Engines_Component_i(CORBA::ORB_ptr orb,
   _orb = CORBA::ORB::_duplicate(orb);
   _poa = PortableServer::POA::_duplicate(poa);
   _container=Engines::Container::_duplicate(container);
+  setContainerName();
   const CORBA::String_var ior = _orb->object_to_string(_container);
   if(regist)
     _myConnexionToRegistry = new RegistryConnexion(0, 0, ior,"theSession", _instanceName.c_str());
@@ -1046,6 +1048,17 @@ Engines_Component_i::configureSalome_file(std::string service_name,
  */
 //=============================================================================
 std::string Engines_Component_i::getContainerName()
+{
+  return _containerName;
+}
+//=============================================================================
+/*! 
+ *  C++ method: set the name of the container associated with this component (attribute _containerName)
+ *  This name does not contains the "/Containers" string and all "/" are replaced by "_"
+ *  \return the container name (reformatted)
+ */
+//=============================================================================
+void Engines_Component_i::setContainerName()
 {
   CORBA::String_var containerName=_container->name();
   std::string name(containerName);
@@ -1053,5 +1066,5 @@ std::string Engines_Component_i::getContainerName()
   string::size_type slash =name.find_first_of('/');
   if(slash != std::string::npos)
     name[slash]='_';
-  return name;
+  _containerName=name;
 }
index 652f637a73a6c8ead82129bb4ace5b88659e8eb2..364b4afcc16490a35f1af2511c2c06f4ad97cf93 100644 (file)
@@ -120,6 +120,7 @@ public:
   PortableServer::ObjectId * getId(); 
   Engines_Container_i *GetContainerPtr();
   std::string getContainerName();
+  void setContainerName();
 
   virtual bool setStudyId(CORBA::Long studyId);
   static bool isMultiStudy();
@@ -148,6 +149,7 @@ protected:
 
   std::string _instanceName ;
   std::string _interfaceName ;
+  std::string _containerName ;
 
   CORBA::ORB_var _orb;
   PortableServer::POA_var _poa;