void create_paco_component_node_instance(in string registeredName,
in string proxy_containerName,
in long studyId) raises(SALOME::SALOME_Exception);
+
+ void updateInstanceNumber();
};
/*--------------------------------------------------------------------------------------------*/
// If it is a sequential component
if (_libtype_map[aCompName] == "seq")
{
- _numInstanceMutex.lock() ; // lock on the instance number
- _numInstance++ ;
- _numInstanceMutex.unlock() ;
+ _numInstanceMutex.lock(); // lock on the instance number
+ _numInstance++;
+ _numInstanceMutex.unlock();
+ Engines::PACO_Container_proxy_impl::updateInstanceNumber();
return Engines::Container_proxy_impl::create_component_instance(componentName, studyId);
}
void* handle = _library_map[impl_name];
_numInstanceMutex.lock() ; // lock on the instance number
_numInstance++ ;
+ int numInstance = _numInstance ;
_numInstanceMutex.unlock() ;
char aNumI[12];
- sprintf( aNumI , "%d" , _numInstance ) ;
+ sprintf( aNumI , "%d" , numInstance ) ;
string instanceName = aCompName + "_inst_" + aNumI ;
// Step 1 : Get proxy !
if (CORBA::is_nil(obj_proxy))
{
INFOS("Proxy reference from NamingService is nil !");
+ INFOS("Proxy name was : " << component_registerName);
SALOME::ExceptionStruct es;
es.type = SALOME::INTERNAL_ERROR;
es.text = "Proxy reference from NamingService is nil !";
return ret;
}
+
+// Cette méthode permet de tenir à jour le compteur des
+// instances pour le container parallèle.
+// En effet losrque l'on charge un composant séquentielle seul
+// le compteur du noeud 0 est augmenté, il faut donc tenir les autres
+// noeuds à jour.
+void
+Engines_Parallel_Container_i::updateInstanceNumber()
+{
+ if (getMyRank() != 0)
+ {
+ _numInstanceMutex.lock();
+ _numInstance++;
+ _numInstanceMutex.unlock();
+ }
+}
//=============================================================================
/*!
*