X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FSALOMEDS%2FSALOMEDS_Server.cxx;h=a1e9a1af18d3ce17c064f16416a0fd56f9cc8d42;hb=781df619ff7409d44142fbd389da5fa6d925bd93;hp=1ed30a91efe121876a87ea94c498d6faaa05ce3e;hpb=4a391974b751369b47508ed160f7d7d706abe741;p=modules%2Fkernel.git diff --git a/src/SALOMEDS/SALOMEDS_Server.cxx b/src/SALOMEDS/SALOMEDS_Server.cxx index 1ed30a91e..a1e9a1af1 100644 --- a/src/SALOMEDS/SALOMEDS_Server.cxx +++ b/src/SALOMEDS/SALOMEDS_Server.cxx @@ -1,42 +1,43 @@ -// SALOME SALOMEDS : data structure of SALOME and sources of Salome data server +// Copyright (C) 2007-2016 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 +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License, or (at your option) any later version. // -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. // +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // + +// SALOME SALOMEDS : data structure of SALOME and sources of Salome data server // File : SALOMEDS_Server.cxx // Author : Yves FRICAUD // Module : SALOME // $Header$ - -#include -#include CORBA_SERVER_HEADER(SALOMEDS) -#include "SALOMEDS_StudyManager_i.hxx" +// #include "utilities.h" #include "Utils_SINGLETON.hxx" + #include "SALOME_NamingService.hxx" +#include "SALOMEDS_Study_i.hxx" + +#include +#include CORBA_SERVER_HEADER(SALOMEDS) #ifdef CHECKTIME #include #endif -using namespace std; // extern "C" // { // for ccmalloc memory debug @@ -53,11 +54,14 @@ int main(int argc, char** argv) try { // Initialise the ORB. - CORBA::ORB_var orb = CORBA::ORB_init(argc, argv, "omniORB3"); - omniORB::MaxMessageSize(100 * 1024 * 1024); +#if OMNIORB_VERSION >= 4 + CORBA::ORB_var orb = CORBA::ORB_init( argc, argv, "omniORB4" ) ; +#else + CORBA::ORB_var orb = CORBA::ORB_init( argc, argv, "omniORB3" ); +#endif + SALOME_NamingService NS; // Obtain a reference to the root POA. - // - long TIMESleep = 250000000; + long TIMESleep = 500000000; int NumberOfTries = 40; int a; timespec ts_req; @@ -75,79 +79,95 @@ int main(int argc, char** argv) const char * Env = getenv("USE_LOGGER"); int EnvL =0; if ((Env!=NULL) && (strlen(Env))) - EnvL=1; + EnvL=1; CosNaming::Name name; name.length(1); name[0].id=CORBA::string_dup("Logger"); PortableServer::POAManager_var pman; for (int i = 1; i<=NumberOfTries; i++) - { - if (i!=1) - a=nanosleep(&ts_req,&ts_rem); - try - { - obj = orb->resolve_initial_references("RootPOA"); - if(!CORBA::is_nil(obj)) - 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)){ - inc = CosNaming::NamingContext::_narrow(theObj); - if(!CORBA::is_nil(inc)) - { - MESSAGE( "SalomeDS Server: Naming Service was found" ); - if(EnvL==1) - { - CORBA::ORB_var orb1 = CORBA::ORB_init(argc,argv) ; - SALOME_NamingService &NS = *SINGLETON_::Instance() ; - NS.init_orb( orb1 ) ; - for(int j=1; j<=NumberOfTries; j++) - { - if (j!=1) - a=nanosleep(&ts_req, &ts_rem); - try - { - object = inc->resolve(name); - } - catch(CosNaming::NamingContext::NotFound) - { - MESSAGE( "SalomeDS Server: Logger Server wasn't found" ); } + { + if (i!=1) +#ifndef WIN32 + a=nanosleep(&ts_req,&ts_rem); +#else + Sleep(TIMESleep/1000000); +#endif + try + { + obj = orb->resolve_initial_references("RootPOA"); + if(!CORBA::is_nil(obj)) + 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)){ + inc = CosNaming::NamingContext::_narrow(theObj); + if(!CORBA::is_nil(inc)) + { + MESSAGE( "SalomeDS Server: Naming Service was found" ); + if(EnvL==1) + { + CORBA::ORB_var orb1 = CORBA::ORB_init(argc,argv) ; + NS = *SINGLETON_::Instance() ; + NS.init_orb( orb1 ) ; + for(int j=1; j<=NumberOfTries; j++) + { + if (j!=1) +#ifndef WIN32 + a=nanosleep(&ts_req, &ts_rem); +#else + Sleep(TIMESleep/1000000); +#endif + try + { + object = inc->resolve(name); + } + catch(CosNaming::NamingContext::NotFound) + { + MESSAGE( "SalomeDS Server: Logger Server wasn't found" ); } - catch(...) - { - MESSAGE( "SalomeDS Server: Unknown exception" ); - } - if (!CORBA::is_nil(object)) - { - MESSAGE( "SalomeDS Server: Logger Server was found" ); - SALOMEDS=1; - break; - } - } - } - } - } - } - catch( const SALOME_Exception &ex ) - { - MESSAGE( "Communication Error : " << ex.what() ); - return EXIT_FAILURE ; - } - if ((SALOMEDS==1)||((EnvL==0)&&(!CORBA::is_nil(inc)))) - break; - } + catch(...) + { + MESSAGE( "SalomeDS Server: Unknown exception" ); + } + if (!CORBA::is_nil(object)) + { + MESSAGE( "SalomeDS Server: Logger Server was found" ); + SALOMEDS=1; + break; + } + } + } + } + } + + } + catch( const SALOME_Exception &ex ) + { + MESSAGE( "Communication Error : " << ex.what() ); + return EXIT_FAILURE ; + } + if ((SALOMEDS==1)||((EnvL==0)&&(!CORBA::is_nil(inc)))) + break; + } // We allocate the objects on the heap. Since these are reference // counted objects, they will be deleted by the POA when they are no // longer needed. - SALOMEDS_StudyManager_i * myStudyManager_i = new SALOMEDS_StudyManager_i(orb); + SALOMEDS_Study_i * myStudy_i = new SALOMEDS_Study_i(orb); // Activate the objects. This tells the POA that the objects are // ready to accept requests. - PortableServer::ObjectId_var myStudyManager_iid = poa->activate_object(myStudyManager_i); - myStudyManager_i->register_name("/myStudyManager"); + PortableServer::ObjectId_var myStudy_iid = poa->activate_object(myStudy_i); + SALOMEDS::Study_var Study = myStudy_i->_this(); + NS.Register(Study.in(), "/Study"); + + // Assign the value of the IOR in the study->root + CORBA::String_var IORStudy = orb->object_to_string(Study); + myStudy_i->GetImpl()->SetTransientReference((char*)IORStudy.in()); + + myStudy_i->_remove_ref(); // Obtain a POAManager, and tell the POA to start accepting // requests on its objects. @@ -162,6 +182,7 @@ int main(int argc, char** argv) timer.ShowAbsolute(); #endif orb->run(); + MESSAGE( "end of SALOME_DS server" ); orb->destroy(); } catch(CORBA::SystemException&)