- CORBA::Object_var obj = _orb->string_to_object(astr.c_str());
- node = Engines::PyScriptNode::_narrow(obj);
- if(!CORBA::is_nil(_dftPyScriptNode))
- _dftPyScriptNode->UnRegister();
- _dftPyScriptNode = node;
- if(!CORBA::is_nil(_dftPyScriptNode))
- _dftPyScriptNode->Register();
+ Utils_Locker lck(&_mutexForDftPy);
+ CORBA::Object_var obj=_orb->string_to_object(astr.c_str());
+ node=Engines::PyScriptNode::_narrow(obj);
+ std::map<std::string,Engines::PyScriptNode_var>::iterator it(_dftPyScriptNode.find(nodeName));
+ if(it==_dftPyScriptNode.end())
+ {
+ _dftPyScriptNode[nodeName]=node;
+ }
+ else
+ {
+ Engines::PyScriptNode_var oldNode((*it).second);
+ if(!CORBA::is_nil(oldNode))
+ oldNode->UnRegister();
+ (*it).second=node;
+ }
+ if(!CORBA::is_nil(node))
+ node->Register();