X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;ds=sidebyside;f=src%2FSALOMEDS%2FSALOMEDS.cxx;h=b0e5c2aa3fc2be2b0797fa8bd8ca11623858b07d;hb=495acf55df01f2587dec216530056731338a38f3;hp=6199d4fed962029c3de95a30d2c3b6989b72031c;hpb=781df619ff7409d44142fbd389da5fa6d925bd93;p=modules%2Fkernel.git diff --git a/src/SALOMEDS/SALOMEDS.cxx b/src/SALOMEDS/SALOMEDS.cxx index 6199d4fed..b0e5c2aa3 100644 --- a/src/SALOMEDS/SALOMEDS.cxx +++ b/src/SALOMEDS/SALOMEDS.cxx @@ -1,4 +1,4 @@ -// 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 @@ -38,6 +38,8 @@ #include "SALOMEDS_Defines.hxx" +#include + // IDL headers #include #include CORBA_SERVER_HEADER(SALOMEDS) @@ -104,27 +106,34 @@ extern "C" } 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 @@ -142,15 +151,6 @@ extern "C" 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) {