From 0ca1be93b03cc4e7203d5ffde1f057f59419d49c Mon Sep 17 00:00:00 2001 From: rahuel Date: Wed, 19 Oct 2005 09:40:43 +0000 Subject: [PATCH] *** empty log message *** --- .../AddComponent_CheckOfUndefined.cxx | 138 +++++++++++++++++- src/AddComponent/Makefile.in | 7 +- 2 files changed, 134 insertions(+), 11 deletions(-) diff --git a/src/AddComponent/AddComponent_CheckOfUndefined.cxx b/src/AddComponent/AddComponent_CheckOfUndefined.cxx index cdda5b5..02a8705 100644 --- a/src/AddComponent/AddComponent_CheckOfUndefined.cxx +++ b/src/AddComponent/AddComponent_CheckOfUndefined.cxx @@ -1,4 +1,4 @@ -// SuperVisionTest AddComponent : example of component that adds two numbers +// SALOME Container : implementation of container and engine for Kernel // // Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS @@ -21,17 +21,139 @@ // // // -// File : AddComponent_CheckOfUndefined.cxx -// Module : SuperVisionTest +// File : SALOME_Container.cxx +// Author : Paul RASCLE, EDF - MARC TAJCHMAN, CEA +// Module : SALOME +// $Header$ -using namespace std; #include -#include +#include +#include + +#ifndef WNT #include +#else +#include +#endif +#include "SALOME_Container_i.hxx" +#include "utilities.h" +#include "Utils_ORB_INIT.hxx" +#include "Utils_SINGLETON.hxx" +#include "SALOMETraceCollector.hxx" +#include "OpUtil.hxx" + +#ifdef CHECKTIME +#include +#endif + +#ifdef HAVE_MPI2 +#include +#endif + +#include "Container_init_python.hxx" + +using namespace std; + +extern "C" void HandleServerSideSignals(CORBA::ORB_ptr theORB); + +int main(int argc, char* argv[]) +{ +#ifdef HAVE_MPI2 + MPI_Init(&argc,&argv); +#endif + + // Initialise the ORB. + //SRN: BugID: IPAL9541, it's necessary to set a size of one message to be at least 100Mb + //CORBA::ORB_var orb = CORBA::ORB_init( argc , argv ) ; + ORB_INIT &init = *SINGLETON_::Instance() ; + ASSERT(SINGLETON_::IsAlreadyExisting()); + CORBA::ORB_var orb = init(0 , 0 ) ; + + SALOMETraceCollector *myThreadTrace = SALOMETraceCollector::instance(orb); + INFOS_COMPILATION; + BEGIN_OF(argv[0]); + + ASSERT(argc > 1); + SCRUTE(argv[1]); + bool isSupervContainer = false; + if (strcmp(argv[1],"SuperVisionContainer") == 0) isSupervContainer = true; + + if (!isSupervContainer) + { + int _argc = 1; + char* _argv[] = {""}; + KERNEL_PYTHON::init_python(argc,argv); + } + else + { + Py_Initialize() ; + PySys_SetArgv( argc , argv ) ; + } + + char *containerName = ""; + if(argc > 1) + { + containerName = argv[1] ; + } + + try + { + CORBA::Object_var obj = orb->resolve_initial_references("RootPOA"); + ASSERT(!CORBA::is_nil(obj)); + PortableServer::POA_var root_poa = PortableServer::POA::_narrow(obj); + + PortableServer::POAManager_var pman = root_poa->the_POAManager(); + + // add new container to the kill list +#ifndef WNT + char aCommand[40]; + sprintf(aCommand, "addToKillList.py %d SALOME_Container", getpid()); + system(aCommand); +#endif + + Engines_Container_i * myContainer + = new Engines_Container_i(orb, root_poa, containerName , argc , argv ); + + pman->activate(); + +#ifdef CHECKTIME + Utils_Timer timer; + timer.Start(); + timer.Stop(); + MESSAGE("SALOME_Registry_Server.cxx - orb->run()"); + timer.ShowAbsolute(); +#endif + + HandleServerSideSignals(orb); + + } + catch(CORBA::SystemException&) + { + INFOS("Caught CORBA::SystemException."); + } + catch(PortableServer::POA::ServantAlreadyActive&) + { + INFOS("Caught CORBA::ServantAlreadyActiveException"); + } + catch(CORBA::Exception&) + { + INFOS("Caught CORBA::Exception."); + } + catch(std::exception& exc) + { + INFOS("Caught std::exception - "<