-// Copyright (C) 2007-2016 CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2019 CEA/DEN, EDF R&D, OPEN CASCADE
//
// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
#include "SALOMEDS_Defines.hxx"
+#include <utilities.h>
+
// IDL headers
#include <SALOMEconfig.h>
#include CORBA_SERVER_HEADER(SALOMEDS)
}
SALOMEDS_EXPORT
- SALOMEDSClient_Study* CreateStudy(CORBA::ORB_ptr orb, PortableServer::POA_ptr root_poa)
+ void CreateStudy(CORBA::ORB_ptr orb, PortableServer::POA_ptr root_poa)
{
SALOME_NamingService namingService(orb);
CORBA::Object_var obj = namingService.Resolve( "/Study" );
SALOMEDS::Study_var aStudy = SALOMEDS::Study::_narrow( obj );
- SALOMEDS_Study_i* aStudy_i;
if( CORBA::is_nil(aStudy) ) {
- aStudy_i = new SALOMEDS_Study_i(orb);
+ 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::ThreadPolicy_var threadPol(root_poa->create_thread_policy(PortableServer::ORB_CTRL_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("CreateStudy: KERNELStudySingleThreadPOA: "<< poa);
+ threadPol->destroy();
+
+ SALOMEDS_Study_i::SetThePOA(poa);
+ SALOMEDS_Study_i* aStudy_i = new SALOMEDS_Study_i(orb);
// Activate the objects. This tells the POA that the objects are ready to accept requests.
PortableServer::ObjectId_var aStudy_iid = root_poa->activate_object(aStudy_i);
aStudy = aStudy_i->_this();
- namingService.Register(aStudy.in(), "/Study");
-
- // Assign the value of the IOR in the study->root
- CORBA::String_var IORStudy = orb->object_to_string(aStudy);
- aStudy_i->GetImpl()->SetTransientReference((char*)IORStudy.in());
+ namingService.Register(aStudy, "/Study");
+ aStudy_i->GetImpl()->GetDocument()->SetModified(false);
+ aStudy_i->_remove_ref();
}
- SALOMEDS_Study* study = new SALOMEDS_Study(aStudy_i->GetImpl());
- aStudy_i->_remove_ref();
- return study;
}
SALOMEDS_EXPORT
return so->GetSObject();
}
- SALOMEDS_EXPORT
- SALOMEDS::Study_ptr ConvertStudy(const _PTR(Study)& theStudy)
- {
- SALOMEDS_Study* study = _CAST(Study, theStudy);
- if ( !theStudy || !study )
- return SALOMEDS::Study::_nil();
- return study->GetStudy();
- }
-
SALOMEDS_EXPORT
SALOMEDS::StudyBuilder_ptr ConvertBuilder(const _PTR(StudyBuilder)& theBuilder)
{