X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2Fruntime%2FSalomeContainerTools.hxx;h=793cf3488d563462b7ad3ad1d7b9430c4c9e5084;hb=aaa4c1ad9dda5d338361925f016a9666f7c32074;hp=1ef95fb6166ac36c8e47ee70eaa9133d317f1727;hpb=3e331eb80221183c95b5c7557d1b00df5efd5683;p=modules%2Fyacs.git diff --git a/src/runtime/SalomeContainerTools.hxx b/src/runtime/SalomeContainerTools.hxx index 1ef95fb61..793cf3488 100644 --- a/src/runtime/SalomeContainerTools.hxx +++ b/src/runtime/SalomeContainerTools.hxx @@ -1,4 +1,4 @@ -// Copyright (C) 2006-2014 CEA/DEN, EDF R&D +// Copyright (C) 2006-2016 CEA/DEN, EDF R&D // // This library is free software; you can redistribute it and/or // modify it under the terms of the GNU Lesser General Public @@ -32,36 +32,107 @@ namespace YACS { namespace ENGINE { + class Task; class Container; class ComponentInstance; class SalomeContainerHelper; - class YACSRUNTIMESALOME_EXPORT SalomeContainerTools + class YACSRUNTIMESALOME_EXPORT SalomeContainerToolsBase + { + public: + virtual ~SalomeContainerToolsBase() { } + virtual std::string getProperty(const std::string& name) const = 0; + virtual void setProperty(const std::string& name, const std::string& value) = 0; + virtual const std::map& getProperties() const = 0; + virtual void clearProperties() = 0; + virtual std::map getResourceProperties(const std::string& name) const = 0; + virtual void addToComponentList(const std::string& name) = 0; + virtual void addToResourceList(const std::string& name) = 0; + virtual Engines::ContainerParameters getParameters() const = 0; + virtual std::string getContainerName() const = 0; + virtual void setContainerName(const std::string& name) = 0; + virtual std::string getHostName() const = 0; + virtual std::string getNotNullContainerName(const Container *contPtr, const Task *askingNode, bool& isEmpty) const = 0; + public: + static void Start(const std::vector& compoNames, SalomeContainerHelper *schelp, SalomeContainerToolsBase& sct, int& shutdownLevel, const Container *cont, const Task *askingNode); + static CORBA::Object_ptr LoadComponent(SalomeContainerHelper *launchModeType, Container *cont, Task *askingNode); + static CORBA::Object_ptr CreateComponentInstance(Container *cont, Engines::Container_ptr contPtr, const ComponentInstance *inst); + static std::string GetPlacementId(const SalomeContainerHelper *launchModeType, const Container *cont, const Task *askingNode); + static std::string GetFullPlacementId(const SalomeContainerHelper *launchModeType, const Container *cont, const Task *askingNode); + static void SetContainerNameOf(Engines::ContainerParameters& params, const std::string& name); + }; + + class YACSRUNTIMESALOME_EXPORT SalomeContainerToolsInter : public SalomeContainerToolsBase + { + public: + SalomeContainerToolsInter() { } + SalomeContainerToolsInter(const SalomeContainerToolsInter& other); + std::string getProperty(const std::string& name) const; + const std::map& getProperties() const { return _propertyMap; } + void clearProperties(); + std::map getResourceProperties(const std::string& name) const; + protected: + std::map _propertyMap; + }; + + class YACSRUNTIMESALOME_EXPORT SalomeContainerTools : public SalomeContainerToolsInter { public: SalomeContainerTools(); SalomeContainerTools(const SalomeContainerTools& other); + int getNumberOfCoresPerWorker() const; + public: + Engines::ContainerParameters getParameters() const { return _params; } + void clearProperties(); + void setProperty(const std::string& name, const std::string& value); + void addToComponentList(const std::string& name); + void addToResourceList(const std::string& name); + std::string getContainerName() const; + void setContainerName(const std::string& name); + std::string getHostName() const; + std::string getNotNullContainerName(const Container *contPtr, const Task *askingNode, bool& isEmpty) const; + protected: + Engines::ContainerParameters _params; + }; + + class PlayGround; + + class YACSRUNTIMESALOME_EXPORT SalomeContainerToolsDecoratorBase : public SalomeContainerToolsBase + { + protected: + SalomeContainerToolsDecoratorBase(SalomeContainerToolsBase *sct):_sct(sct) { } + SalomeContainerToolsBase *getWorker() { return _sct; } + const SalomeContainerToolsBase *getWorker() const { return _sct; } + public: std::string getProperty(const std::string& name) const; void setProperty(const std::string& name, const std::string& value); - const std::map& getProperties() const { return _propertyMap; } + const std::map& getProperties() const; void clearProperties(); std::map getResourceProperties(const std::string& name) const; void addToComponentList(const std::string& name); void addToResourceList(const std::string& name); - public: + Engines::ContainerParameters getParameters() const; std::string getContainerName() const; void setContainerName(const std::string& name); - std::string getNotNullContainerName(const Container *contPtr, bool& isEmpty) const; std::string getHostName() const; - Engines::ContainerParameters getParameters() const { return _params; } + std::string getNotNullContainerName(const Container *contPtr, const Task *askingNode, bool& isEmpty) const; + private: + SalomeContainerToolsBase *_sct; + }; + + class SalomeHPContainerVectOfHelper; + + class YACSRUNTIMESALOME_EXPORT SalomeContainerToolsSpreadOverTheResDecorator : public SalomeContainerToolsDecoratorBase + { public: - static void Start(const std::vector& compoNames, SalomeContainerHelper *schelp, SalomeContainerTools& sct, int& shutdownLevel, const Container *cont, const ComponentInstance *inst); - static CORBA::Object_ptr LoadComponent(SalomeContainerHelper *launchModeType, Container *cont, ComponentInstance *inst); - static std::string GetPlacementId(SalomeContainerHelper *launchModeType, const Container *cont, const ComponentInstance *inst); - static std::string GetFullPlacementId(SalomeContainerHelper *launchModeType, const Container *cont, const ComponentInstance *inst); - protected: - std::map _propertyMap; - Engines::ContainerParameters _params; + SalomeContainerToolsSpreadOverTheResDecorator(SalomeContainerToolsBase *sct, const PlayGround *pg, const SalomeHPContainerVectOfHelper *vh, const Task *node):SalomeContainerToolsDecoratorBase(sct),_pg(pg),_vh(vh),_node(node) { } + Engines::ContainerParameters getParameters() const; + private: + static std::string DeduceMachineFrom(const std::vector< std::pair >& allResInfo, int iPos, int sz, int nbProcPerNode); + private: + const PlayGround *_pg; + const SalomeHPContainerVectOfHelper *_vh; + const Task *_node; }; } }