else {
myPOA = PortableServer::POA::_duplicate(thePOA);
}
- if(MYDEBUG)
- MESSAGE("GenericObj_i::GenericObj_i thePOA: " << thePOA << " myPOA: " << myPOA);
}
/*!
*/
PortableServer::POA_ptr GenericObj_i::_default_POA()
{
- MESSAGE("GenericObj_i::_default_POA: " << myPOA);
return PortableServer::POA::_duplicate(myPOA);
}
policies.length(1);
PortableServer::ThreadPolicy_var threadPol(poa->create_thread_policy(PortableServer::SINGLE_THREAD_MODEL));
policies[0]=PortableServer::ThreadPolicy::_duplicate(threadPol);
- PortableServer::POA_var poa2(poa->create_POA("SingleThreadPOA4RegistryStandalone",manager,policies));
+ PortableServer::POA_var poa2(poa->create_POA("SingleThPOA4SDS",manager,policies));
threadPol->destroy();
//
PortableServer::ObjectId_var id(poa2->activate_object(ptrRegistry));
#include "SALOMEDSClient_IParameters.hxx"
#include "SALOMEDS_IParameters.hxx"
#include "SALOMEDS_StudyManager_i.hxx"
-#include "utilities.h"
#include "SALOMEDS_Defines.hxx"
SALOME_NamingService namingService(orb);
CORBA::Object_var obj = namingService.Resolve( "/myStudyManager" );
SALOMEDS::StudyManager_var theManager = SALOMEDS::StudyManager::_narrow( obj );
- if( CORBA::is_nil(theManager) )
- {
- PortableServer::POAManager_var pman = root_poa->the_POAManager();
- CORBA::PolicyList policies;
- policies.length(2);
- PortableServer::ThreadPolicy_var threadPol(root_poa->create_thread_policy(PortableServer::SINGLE_THREAD_MODEL));
- PortableServer::ImplicitActivationPolicy_var implicitPol(root_poa->create_implicit_activation_policy(PortableServer::IMPLICIT_ACTIVATION));
- policies[0] = PortableServer::ThreadPolicy::_duplicate(threadPol);
- policies[1] = PortableServer::ImplicitActivationPolicy::_duplicate(implicitPol);
- PortableServer::POA_var poa = root_poa->create_POA("KERNELStudySingleThreadPOA",pman,policies);
- MESSAGE("CreateStudyManager: KERNELStudySingleThreadPOA: "<< poa);
- threadPol->destroy();
-
- SALOMEDS_StudyManager_i * aStudyManager_i = new SALOMEDS_StudyManager_i(orb, poa);
+ if( CORBA::is_nil(theManager) ) {
+ SALOMEDS_StudyManager_i * aStudyManager_i = new SALOMEDS_StudyManager_i(orb, root_poa);
// Activate the objects. This tells the POA that the objects are ready to accept requests.
- PortableServer::ObjectId_var aStudyManager_iid = poa->activate_object(aStudyManager_i);
+ PortableServer::ObjectId_var aStudyManager_iid = root_poa->activate_object(aStudyManager_i);
//give ownership to the poa : the object will be deleted by the poa
aStudyManager_i->_remove_ref();
aStudyManager_i->register_name((char*)"/myStudyManager");
// Module : SALOME
//
#include "SALOMEDS_ChildIterator_i.hxx"
-#include "SALOMEDS_StudyManager_i.hxx"
#include "SALOMEDS_SObject_i.hxx"
#include "SALOMEDS.hxx"
#include "SALOMEDSImpl_SObject.hxx"
*/
//============================================================================
SALOMEDS_ChildIterator_i::SALOMEDS_ChildIterator_i(const SALOMEDSImpl_ChildIterator& theImpl,
- CORBA::ORB_ptr orb) :
- GenericObj_i(SALOMEDS_StudyManager_i::GetThePOA()),
- _it(theImpl.GetPersistentCopy())
+ CORBA::ORB_ptr orb)
+ : _it(theImpl.GetPersistentCopy())
{
SALOMEDS::Locker lock;
_orb = CORBA::ORB::_duplicate(orb);
if(_it) delete _it;
}
-//============================================================================
-/*!
- \brief Get default POA for the servant object.
-
- This function is implicitly called from "_this()" function.
- Default POA can be set via the constructor.
-
- \return reference to the default POA for the servant
-*/
-//============================================================================
-PortableServer::POA_ptr SALOMEDS_ChildIterator_i::_default_POA()
-{
- myPOA = PortableServer::POA::_duplicate(SALOMEDS_StudyManager_i::GetThePOA());
- //MESSAGE("SALOMEDS_ChildIterator_i::_default_POA: " << myPOA);
- return PortableServer::POA::_duplicate(myPOA);
-}
-
//============================================================================
/*! Function :Init
*
//! standard destructor
~SALOMEDS_ChildIterator_i();
-
- virtual PortableServer::POA_ptr _default_POA();
virtual void Init();
virtual void InitEx(CORBA::Boolean);
//
#include "utilities.h"
#include "SALOMEDS_GenericAttribute_i.hxx"
-#include "SALOMEDS_StudyManager_i.hxx"
#include "SALOMEDS_Attributes.hxx"
#include "SALOMEDS.hxx"
#include "SALOMEDSImpl_SObject.hxx"
UNEXPECT_CATCH(GALockProtection, SALOMEDS::GenericAttribute::LockProtection);
-SALOMEDS_GenericAttribute_i::SALOMEDS_GenericAttribute_i(DF_Attribute* theImpl, CORBA::ORB_ptr theOrb) :
- GenericObj_i(SALOMEDS_StudyManager_i::GetThePOA())
+SALOMEDS_GenericAttribute_i::SALOMEDS_GenericAttribute_i(DF_Attribute* theImpl, CORBA::ORB_ptr theOrb)
{
_orb = CORBA::ORB::_duplicate(theOrb);
_impl = theImpl;
{
}
-//============================================================================
-/*!
- \brief Get default POA for the servant object.
-
- This function is implicitly called from "_this()" function.
- Default POA can be set via the constructor.
-
- \return reference to the default POA for the servant
-*/
-//============================================================================
-PortableServer::POA_ptr SALOMEDS_GenericAttribute_i::_default_POA()
-{
- myPOA = PortableServer::POA::_duplicate(SALOMEDS_StudyManager_i::GetThePOA());
- //MESSAGE("SALOMEDS_GenericAttribute_i::_default_POA: " << myPOA);
- return PortableServer::POA::_duplicate(myPOA);
-}
-
void SALOMEDS_GenericAttribute_i::CheckLocked() throw (SALOMEDS::GenericAttribute::LockProtection)
{
SALOMEDS::Locker lock;
SALOMEDS_GenericAttribute_i(DF_Attribute* theImpl, CORBA::ORB_ptr theOrb);
virtual ~SALOMEDS_GenericAttribute_i();
- virtual PortableServer::POA_ptr _default_POA();
-
void CheckLocked() throw (SALOMEDS::GenericAttribute::LockProtection);
virtual char* Type();
#include "SALOMEDS_SComponentIterator_i.hxx"
#include "SALOMEDS.hxx"
#include "SALOMEDSImpl_SComponent.hxx"
-#include "SALOMEDS_StudyManager_i.hxx"
-#include "utilities.h"
//============================================================================
/*! Function : constructor
//============================================================================
SALOMEDS_SComponentIterator_i::SALOMEDS_SComponentIterator_i(const SALOMEDSImpl_SComponentIterator& theImpl,
- CORBA::ORB_ptr orb) :
- GenericObj_i(SALOMEDS_StudyManager_i::GetThePOA())
+ CORBA::ORB_ptr orb)
{
_orb = CORBA::ORB::_duplicate(orb);
_impl = theImpl.GetPersistentCopy();
if(_impl) delete _impl;
}
-//============================================================================
-/*!
- \brief Get default POA for the servant object.
-
- This function is implicitly called from "_this()" function.
- Default POA can be set via the constructor.
-
- \return reference to the default POA for the servant
-*/
-//============================================================================
-PortableServer::POA_ptr SALOMEDS_SComponentIterator_i::_default_POA()
-{
- myPOA = PortableServer::POA::_duplicate(SALOMEDS_StudyManager_i::GetThePOA());
- MESSAGE("SALOMEDS_SComponentIterator_i::_default_POA: " << myPOA);
- return PortableServer::POA::_duplicate(myPOA);
-}
-
//============================================================================
/*! Function : Init
*
SALOMEDS_SComponentIterator_i(const SALOMEDSImpl_SComponentIterator& theImpl, CORBA::ORB_ptr);
~SALOMEDS_SComponentIterator_i();
-
- virtual PortableServer::POA_ptr _default_POA();
virtual void Init();
virtual CORBA::Boolean More();
* Purpose :
*/
//============================================================================
-SALOMEDS_SObject_i::SALOMEDS_SObject_i(const SALOMEDSImpl_SObject& impl, CORBA::ORB_ptr orb) :
- GenericObj_i(SALOMEDS_StudyManager_i::GetThePOA())
+SALOMEDS_SObject_i::SALOMEDS_SObject_i(const SALOMEDSImpl_SObject& impl, CORBA::ORB_ptr orb)
{
_impl = 0;
if(!impl.IsNull()) {
if(_impl) delete _impl;
}
-//============================================================================
-/*!
- \brief Get default POA for the servant object.
-
- This function is implicitly called from "_this()" function.
- Default POA can be set via the constructor.
-
- \return reference to the default POA for the servant
-*/
-//============================================================================
-PortableServer::POA_ptr SALOMEDS_SObject_i::_default_POA()
-{
- myPOA = PortableServer::POA::_duplicate(SALOMEDS_StudyManager_i::GetThePOA());
- //MESSAGE("SALOMEDS_SObject_i::_default_POA: " << myPOA);
- return PortableServer::POA::_duplicate(myPOA);
-}
-
//================================================================================
/*!
* \brief Returns true if the %SObject does not belong to any %Study
SALOMEDS_SObject_i(const SALOMEDSImpl_SObject&, CORBA::ORB_ptr);
virtual ~SALOMEDS_SObject_i();
-
- virtual PortableServer::POA_ptr _default_POA();
virtual CORBA::Boolean IsNull();
virtual char* GetID();
ts_rem.tv_nsec=0;
ts_rem.tv_sec=0;
CosNaming::NamingContext_var inc;
- PortableServer::POA_var defaultPoa;
PortableServer::POA_var poa;
CORBA::Object_var theObj;
CORBA::Object_var obj;
{
obj = orb->resolve_initial_references("RootPOA");
if(!CORBA::is_nil(obj))
- defaultPoa = PortableServer::POA::_narrow(obj);
- if(!CORBA::is_nil(defaultPoa))
- pman = defaultPoa->the_POAManager();
-
- PortableServer::POAManager_var pman = defaultPoa->the_POAManager();
- CORBA::PolicyList policies;
- policies.length(2);
- PortableServer::ThreadPolicy_var threadPol(defaultPoa->create_thread_policy(PortableServer::SINGLE_THREAD_MODEL));
- PortableServer::ImplicitActivationPolicy_var implicitPol(defaultPoa->create_implicit_activation_policy(PortableServer::IMPLICIT_ACTIVATION));
- policies[0] = PortableServer::ThreadPolicy::_duplicate(threadPol);
- policies[1] = PortableServer::ImplicitActivationPolicy::_duplicate(implicitPol);
- poa = defaultPoa->create_POA("KERNELStandaloneStudySingleThreadPOA",pman,policies);
- threadPol->destroy();
-
+ poa = PortableServer::POA::_narrow(obj);
+ if(!CORBA::is_nil(poa))
+ pman = poa->the_POAManager();
if(!CORBA::is_nil(orb))
theObj = orb->resolve_initial_references("NameService");
if (!CORBA::is_nil(theObj)){
_isLocal = true;
_local_impl = theStudy;
_corba_impl = SALOMEDS::Study::_nil();
-
- pthread_mutex_init( &SALOMEDS_StudyBuilder::_remoteBuilderMutex, 0 );
-
init_orb();
}
long pid = (long)getpid();
#endif
- pthread_mutex_init( &SALOMEDS_StudyBuilder::_remoteBuilderMutex, 0 );
-
long addr = theStudy->GetLocalImpl(Kernel_Utils::GetHostname().c_str(), pid, _isLocal);
if(_isLocal) {
_local_impl = reinterpret_cast<SALOMEDSImpl_Study*>(addr);
#include "Utils_ORB_INIT.hxx"
#include "Utils_SINGLETON.hxx"
-pthread_mutex_t SALOMEDS_StudyBuilder::_remoteBuilderMutex;
-
SALOMEDS_StudyBuilder::SALOMEDS_StudyBuilder(SALOMEDSImpl_StudyBuilder* theBuilder)
{
_isLocal = true;
SALOMEDS_StudyBuilder::SALOMEDS_StudyBuilder(SALOMEDS::StudyBuilder_ptr theBuilder)
{
- pthread_mutex_lock( &_remoteBuilderMutex );
_isLocal = false;
_local_impl = NULL;
_corba_impl = SALOMEDS::StudyBuilder::_duplicate(theBuilder);
SALOMEDS_StudyBuilder::~SALOMEDS_StudyBuilder()
{
- if (!_isLocal) pthread_mutex_unlock( &_remoteBuilderMutex );
}
_PTR(SComponent) SALOMEDS_StudyBuilder::NewComponent(const std::string& ComponentDataType)
#include "SALOMEDSClient.hxx"
#include "SALOMEDSImpl_StudyBuilder.hxx"
-#include <pthread.h>
// IDL headers
#include <SALOMEconfig.h>
SALOMEDS::StudyBuilder_var _corba_impl;
CORBA::ORB_var _orb;
-
public:
- static pthread_mutex_t _remoteBuilderMutex;
SALOMEDS_StudyBuilder(SALOMEDSImpl_StudyBuilder* theBuilder);
SALOMEDS_StudyBuilder(SALOMEDS::StudyBuilder_ptr theBuilder);
//
#include "utilities.h"
#include "SALOMEDS_StudyBuilder_i.hxx"
-#include "SALOMEDS_StudyManager_i.hxx"
#include "SALOMEDS_Study_i.hxx"
#include "SALOMEDS_SObject_i.hxx"
#include "SALOMEDS_SComponent_i.hxx"
SALOMEDS_StudyBuilder_i::~SALOMEDS_StudyBuilder_i()
{}
-//============================================================================
-/*!
- \brief Get default POA for the servant object.
-
- This function is implicitly called from "_this()" function.
- Default POA can be set via the constructor.
-
- \return reference to the default POA for the servant
-*/
-//============================================================================
-PortableServer::POA_ptr SALOMEDS_StudyBuilder_i::_default_POA()
-{
- PortableServer::POA_ptr poa = SALOMEDS_StudyManager_i::GetThePOA();
- MESSAGE("SALOMEDS_StudyBuilder_i::_default_POA: " << poa);
- return PortableServer::POA::_duplicate(poa);
-}
-
//============================================================================
/*! Function : NewComponent
* Purpose : Create a new component (Scomponent)
~SALOMEDS_StudyBuilder_i();
- virtual PortableServer::POA_ptr _default_POA();
-
//! NewComponent
/*!
\param ComponentDataType
{
_orb = CORBA::ORB::_duplicate(orb);
_poa = PortableServer::POA::_duplicate(thePOA);
- MESSAGE("thePOA, _poa="<<_poa);
- if (_mapOfPOA.empty())
- _mapOfPOA[0] = _poa;
- else
- MESSAGE("_mapOfPOA[0] already contains: " << _mapOfPOA[0]);
_name_service = new SALOME_NamingService(_orb);
// Study directory creation in the naming service : to register all
// open studies in the session
delete _impl;
}
-//============================================================================
-/*!
- \brief Get default POA for the servant object.
-
- This function is implicitly called from "_this()" function.
- Default POA can be set via the constructor.
-
- \return reference to the default POA for the servant
-*/
-//============================================================================
-PortableServer::POA_ptr SALOMEDS_StudyManager_i::_default_POA()
-{
- MESSAGE("SALOMEDS_StudyManager_i::_default_POA: " << _poa);
- return PortableServer::POA::_duplicate(_poa);
-}
-
//============================================================================
/*! Function : register_name
* Purpose : Register the study Manager in the naming service under the
return PortableServer::POA::_nil();
}
-PortableServer::POA_ptr SALOMEDS_StudyManager_i::GetThePOA()
-{
- std::map<int, PortableServer::POA_ptr>::iterator iter = _mapOfPOA.begin();
- if (iter != _mapOfPOA.end())
- {
- PortableServer::POA_ptr aPoa = iter->second;
- //MESSAGE("GetThePOA(): "<< aPoa);
- return aPoa;
- }
- MESSAGE("GetThePOA(): _nil !");
- return PortableServer::POA::_nil();
-}
-
CORBA::Long SALOMEDS_StudyManager_i::getPID()
{
#ifdef WIN32
//! standard destructor
virtual ~SALOMEDS_StudyManager_i();
- virtual PortableServer::POA_ptr _default_POA();
-
//! method to Register study Manager in the naming service
/*!
\param char* arguments, the context to register the study manager in the NS
virtual CORBA::LongLong GetLocalImpl(const char* theHostname, CORBA::Long thePID, CORBA::Boolean& isLocal);
static PortableServer::POA_ptr GetPOA(const SALOMEDS::Study_ptr theStudy);
- static PortableServer::POA_ptr GetThePOA();
void Shutdown() { if(!CORBA::is_nil(_orb)) _orb->shutdown(0); }
};
_mapOfStudies.erase(_impl);
}
-//============================================================================
-/*!
- \brief Get default POA for the servant object.
-
- This function is implicitly called from "_this()" function.
- Default POA can be set via the constructor.
-
- \return reference to the default POA for the servant
-*/
-//============================================================================
-PortableServer::POA_ptr SALOMEDS_Study_i::_default_POA()
-{
- PortableServer::POA_ptr poa = SALOMEDS_StudyManager_i::GetThePOA();
- MESSAGE("SALOMEDS_Study_i::_default_POA: " << poa);
- return PortableServer::POA::_duplicate(poa);
-}
-
//============================================================================
/*! Function : GetPersistentReference
* Purpose : Get persistent reference of study (idem URL())
#include <stdio.h>
//SALOMEDS headers
-#include "SALOMEDS_StudyManager_i.hxx"
#include "SALOMEDS_SComponentIterator_i.hxx"
#include "SALOMEDS_StudyBuilder_i.hxx"
#include "SALOMEDS_SObject_i.hxx"
//! standard destructor
virtual ~SALOMEDS_Study_i();
-
- virtual PortableServer::POA_ptr _default_POA();
//! method to Get persistent reference of study (idem URL())
/*!
#include "SALOMEDS_UseCaseIterator_i.hxx"
#include "SALOMEDS_SObject_i.hxx"
#include "SALOMEDS.hxx"
-#include "SALOMEDS_StudyManager_i.hxx"
#include "utilities.h"
*/
//============================================================================
SALOMEDS_UseCaseBuilder_i::SALOMEDS_UseCaseBuilder_i(SALOMEDSImpl_UseCaseBuilder* theImpl,
- CORBA::ORB_ptr orb) :
- GenericObj_i(SALOMEDS_StudyManager_i::GetThePOA())
+ CORBA::ORB_ptr orb)
{
_orb = CORBA::ORB::_duplicate(orb);
_impl = theImpl;
{
}
-//============================================================================
-/*!
- \brief Get default POA for the servant object.
-
- This function is implicitly called from "_this()" function.
- Default POA can be set via the constructor.
-
- \return reference to the default POA for the servant
-*/
-//============================================================================
-PortableServer::POA_ptr SALOMEDS_UseCaseBuilder_i::_default_POA()
-{
- myPOA = PortableServer::POA::_duplicate(SALOMEDS_StudyManager_i::GetThePOA());
- //MESSAGE("SALOMEDS_UseCaseBuilder_i::_default_POA: " << myPOA);
- return PortableServer::POA::_duplicate(myPOA);
-}
-
//============================================================================
/*! Function : Append
//! standard destructor
~SALOMEDS_UseCaseBuilder_i();
-
- virtual PortableServer::POA_ptr _default_POA();
virtual CORBA::Boolean Append(SALOMEDS::SObject_ptr theObject);
#include "SALOMEDS_UseCaseIterator_i.hxx"
#include "SALOMEDS_SObject_i.hxx"
#include "SALOMEDS.hxx"
-#include "SALOMEDS_StudyManager_i.hxx"
#include "SALOMEDSImpl_SObject.hxx"
#include "utilities.h"
*/
//============================================================================
SALOMEDS_UseCaseIterator_i::SALOMEDS_UseCaseIterator_i(const SALOMEDSImpl_UseCaseIterator& theImpl,
- CORBA::ORB_ptr orb) :
- GenericObj_i(SALOMEDS_StudyManager_i::GetThePOA())
+ CORBA::ORB_ptr orb)
{
_orb = CORBA::ORB::_duplicate(orb);
_impl = theImpl.GetPersistentCopy();
if(_impl) delete _impl;
}
-//============================================================================
-/*!
- \brief Get default POA for the servant object.
-
- This function is implicitly called from "_this()" function.
- Default POA can be set via the constructor.
-
- \return reference to the default POA for the servant
-*/
-//============================================================================
-PortableServer::POA_ptr SALOMEDS_UseCaseIterator_i::_default_POA()
-{
- myPOA = PortableServer::POA::_duplicate(SALOMEDS_StudyManager_i::GetThePOA());
- //MESSAGE("SALOMEDS_UseCaseIterator_i::_default_POA: " << myPOA);
- return PortableServer::POA::_duplicate(myPOA);
-}
-
//============================================================================
/*! Function :Init
*
//! standard destructor
~SALOMEDS_UseCaseIterator_i();
-
- virtual PortableServer::POA_ptr _default_POA();
virtual void Init(CORBA::Boolean);
virtual CORBA::Boolean More();
#include "Utils_CorbaException.hxx"
#include "Utils_SALOME_Exception.hxx"
-#include <sstream>
-#include <execinfo.h>
-#include <dlfcn.h>
-#include <cxxabi.h>
-
#include <SALOMEconfig.h>
#include CORBA_SERVER_HEADER(SALOME_Exception)
-//#define NBLINES_BACKTRACE 64
-
-void printBacktrace(void **stacklines, int nbLines, std::stringstream& txt)
-{
- char **stackSymbols = backtrace_symbols(stacklines, nbLines);
- for (int i = 0; i < nbLines; i++)
- {
- Dl_info infodl;
- if (dladdr(stacklines[i], &infodl))
- {
- txt << i << " " << infodl.dli_fname << " " << infodl.dli_fbase << " ";
- char *demangled = NULL;
- int status = 0;
- demangled = abi::__cxa_demangle(infodl.dli_sname, NULL, 0, &status);
- if (status == 0 && demangled != NULL)
- {
- std::string demangstr = demangled; // copy
- txt << demangstr;
- }
- else
- {
- if (infodl.dli_sname != 0 && infodl.dli_sname[0] != 0)
- {
- std::string sname = infodl.dli_sname;
- if (sname.size() > 0)
- txt << infodl.dli_sname;
- }
- }
- txt << " " << infodl.dli_saddr;
- txt << std::endl;
- free(demangled);
- }
- else
- txt << i << " " << stackSymbols[i] << std::endl;
- }
- free(stackSymbols);
-}
-
void SalomeException ()
{
- void *stacklines[64];
- size_t nbLines;
- nbLines = backtrace(stacklines, 64);
- std::stringstream txt;
- txt << "Salome Exception" << std::endl;
- printBacktrace(stacklines, nbLines, txt);
- throw SALOME_Exception(txt.str().c_str());
+ throw SALOME_Exception("Salome Exception");
}
-void SALOME_SalomeException()
-{
- void *stacklines[64];
- size_t nbLines;
- nbLines = backtrace(stacklines, 64);
- std::stringstream txt;
- txt << "INTERNAL_ERROR, backtrace stack:" << nbLines << std::endl;
- printBacktrace(stacklines, nbLines, txt);
- THROW_SALOME_CORBA_EXCEPTION(txt.str().c_str(), SALOME::INTERNAL_ERROR);
+void SALOME_SalomeException() {
+ THROW_SALOME_CORBA_EXCEPTION("INTERNAL ERROR", SALOME::INTERNAL_ERROR);
}