X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FLifeCycleCORBA%2FSALOME_LifeCycleCORBA.hxx;h=be24867f0cdc723ff86818e3a9cff511163ff7df;hb=bbac39ee34bd6a5e6fd051024209399b97b818b1;hp=2338fe34c690ebc4cfe4abadd25768b7af09f321;hpb=1f742af859d50d34c63f9dc02f9a705089bf060e;p=modules%2Fkernel.git diff --git a/src/LifeCycleCORBA/SALOME_LifeCycleCORBA.hxx b/src/LifeCycleCORBA/SALOME_LifeCycleCORBA.hxx index 2338fe34c..be24867f0 100644 --- a/src/LifeCycleCORBA/SALOME_LifeCycleCORBA.hxx +++ b/src/LifeCycleCORBA/SALOME_LifeCycleCORBA.hxx @@ -1,69 +1,147 @@ -// SALOME LifeCycleCORBA : implementation of containers and engines life cycle both in Python and C++ +// Copyright (C) 2007-2012 CEA/DEN, EDF R&D, OPEN CASCADE // -// 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 +// 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. // +// 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 // // File : SALOME_LifeCycleCORBA.hxx // Author : Paul RASCLE, EDF - MARC TAJCHMAN, CEA // Module : SALOME -// $Header$ #ifndef _SALOME_LIFECYCLECORBA_HXX_ #define _SALOME_LIFECYCLECORBA_HXX_ #include +#ifndef WIN32 #include +#endif #include #include +#include +#include CORBA_CLIENT_HEADER(SALOME_ContainerManager) #include CORBA_CLIENT_HEADER(SALOME_Component) +#include + +#ifdef WIN32 +# if defined LIFECYCLECORBA_EXPORTS || defined SalomeLifeCycleCORBA_EXPORTS +# define LIFECYCLECORBA_EXPORT __declspec( dllexport ) +# else +# define LIFECYCLECORBA_EXPORT __declspec( dllimport ) +# endif +#else +# define LIFECYCLECORBA_EXPORT +#endif + class SALOME_NamingService; -class SALOME_LifeCycleCORBA +class LIFECYCLECORBA_EXPORT IncompatibleComponent : public SALOME_Exception +{ +public : + IncompatibleComponent(void); + IncompatibleComponent(const IncompatibleComponent &ex); +}; + +class LIFECYCLECORBA_EXPORT SALOME_LifeCycleCORBA { public: - SALOME_LifeCycleCORBA(); - SALOME_LifeCycleCORBA(SALOME_NamingService *ns); + SALOME_LifeCycleCORBA(SALOME_NamingService *ns = 0); virtual ~SALOME_LifeCycleCORBA(); - Engines::Container_var FindContainer(const char *containerName); - Engines::Component_var FindOrLoad_Component(const char *containerName, - const char *componentName, - const char *implementationPath); - Engines::Component_var FindOrLoad_Component(const char *containerName, - const char *componentName); + Engines::EngineComponent_ptr + FindComponent(const Engines::MachineParameters& params, + const char *componentName, + int studyId=0); + + Engines::EngineComponent_ptr + LoadComponent(const Engines::MachineParameters& params, + const char *componentName, + int studyId=0); + + Engines::EngineComponent_ptr + FindOrLoad_Component(const Engines::MachineParameters& params, + const char *componentName, + int studyId =0); + + // SALOME 6 - Interface + Engines::EngineComponent_ptr + FindOrLoad_Component(const Engines::ContainerParameters& params, + const char *componentName, + int studyId =0); + + Engines::EngineComponent_ptr + FindOrLoad_Component(const char *containerName, + const char *componentName); // for compatibility + + // Parallel extension + Engines::EngineComponent_ptr + Load_ParallelComponent(const Engines::ContainerParameters& params, + const char *componentName, + int studyId); + + bool isKnownComponentClass(const char *componentName); + + bool isMpiContainer(const Engines::ContainerParameters& params) + throw(IncompatibleComponent); + + int NbProc(const Engines::ContainerParameters& params); + + static void preSet(Engines::MachineParameters& outparams); + static void preSet(Engines::ResourceParameters& outparams); + static void preSet(Engines::ContainerParameters& outparams); + + Engines::ContainerManager_ptr getContainerManager(); + Engines::ResourcesManager_ptr getResourcesManager(); + SALOME_NamingService * namingService(); + CORBA::ORB_ptr orb(); + void copyFile(const char* hostSrc, const char* fileSrc, const char* hostDest, const char* fileDest); + + void shutdownServers(); + static void killOmniNames(); + + // For SALOME 5.1.x + // Will be deleted on SALOME 6 + void convert(const Engines::MachineParameters& params_in, + Engines::ContainerParameters& params_out); protected: - SALOME_NamingService *_NS; - Engines::Container_var _FactoryServer ; -private: - std::string ContainerName( const char * aComputerContainer , - std::string * theComputer , - std::string * theContainer ) ; - std::string ComputerPath( const char * theComputer ) ; - Engines::Container_var FindOrStartContainer(const std::string aComputerContainer , - const std::string theComputer , - const std::string theContainer ) ; + /*! Establish if a component called "componentName" in a container called + * "containerName" + * exists among the list of resources in "listOfMachines". + * This method uses Naming Service to find the component. + */ + Engines::EngineComponent_ptr + _FindComponent(const Engines::ContainerParameters& params, + const char *componentName, + int studyId, + const Engines::ResourceList& listOfResources); + Engines::EngineComponent_ptr + _LoadComponent(const Engines::ContainerParameters& params, + const char *componentName, + int studyId); + + SALOME_NamingService *_NS; + SALOME_NamingService *_NSnew; + Engines::ContainerManager_var _ContManager; + Engines::ResourcesManager_var _ResManager; + } ; #endif