-// Copyright (C) 2006-2019 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
#include "SalomeContainerHelper.hxx"
#include "SalomeContainerTools.hxx"
#include "SalomeHPContainerTools.hxx"
-#include "PlayGround.hxx"
-
#include "Mutex.hxx"
-#include "AutoRefCnt.hxx"
-
#include <string>
#include <vector>
#include <map>
{
class Task;
class SalomeComponent;
- class SalomeHPContainer;
-
- class YACSRUNTIMESALOME_EXPORT SalomeHPContainerBase : public HomogeneousPoolContainer
- {
- protected:
- SalomeHPContainerBase(SalomeHPContainerVectOfHelper *resShared);
- SalomeHPContainerBase(SalomeHPContainerVectOfHelper *resShared, bool isRefEaten);
- SalomeHPContainerBase(const SalomeHPContainerBase& other);
- void startInternal(const Task *askingNode, SalomeContainerToolsBase& sct, const std::vector<std::string>& compoNames);
- SalomeHPContainer *getTheBoss();
- const SalomeHPContainer *getTheBoss() const;
- public:
- void release(const Task *node);
- //
- bool isAlreadyStarted(const Task *askingNode) const;
- void shutdown(int level);
- //! For thread safety for concurrent load operation on same Container.
- void lock();
- //! For thread safety for concurrent load operation on same Container.
- void unLock();
- void setSizeOfPool(int sz);
- int getSizeOfPool() const;
- void setProperty(const std::string& name,const std::string& value);
- std::string getProperty(const std::string& name) const;
- std::map<std::string,std::string> getProperties() const;
- void clearProperties();
- std::string getPlacementId(const Task *askingNode) const;
- std::string getFullPlacementId(const Task *askingNode) const;
- std::map<std::string,std::string> getResourceProperties(const std::string& name) const;
- void addComponentName(const std::string& name);
- void checkCapabilityToDealWith(const ComponentInstance *inst) const throw(YACS::Exception);
- Engines::Container_var getContainerPtr(const Task *askingNode) const;
- std::vector<std::string> getKernelContainerNames() const;
- public:
- int getShutdownLev() const { return _shutdownLevel; }
- YACS::BASES::AutoRefCnt<HomogeneousPoolContainer> decorate(YACS::BASES::AutoConstRefCnt<PartDefinition> pd);
-#ifndef SWIG
- const SalomeHPContainerVectOfHelper *getDirectAccessToVecOfCont() const { return _launchModeType; }
-#endif
- protected:
- int _shutdownLevel;
- YACS::BASES::AutoRefCnt<SalomeHPContainerVectOfHelper> _launchModeType;
- std::string _initScript;
- };
-
- class YACSRUNTIMESALOME_EXPORT SalomeHPContainer : public SalomeHPContainerBase
+
+ class YACSRUNTIMESALOME_EXPORT SalomeHPContainer : public HomogeneousPoolContainer
{
public:
SalomeHPContainer();
SalomeHPContainer(const SalomeHPContainer& other);
//HP specific part
+ void setSizeOfPool(int sz);
+ int getSizeOfPool() const;
std::size_t getNumberOfFreePlace() const;
void allocateFor(const std::vector<const Task *>& nodes);
+ void release(const Task *node);
+ //! For thread safety for concurrent load operation on same Container.
+ void lock();
+ //! For thread safety for concurrent load operation on same Container.
+ void unLock();
//
std::string getKind() const;
std::string getDiscreminantStrOfThis(const Task *askingNode) const;
+ bool isAlreadyStarted(const Task *askingNode) const;
void start(const Task *askingNode) throw(Exception);
+ void shutdown(int level);
+ std::string getPlacementId(const Task *askingNode) const;
+ std::string getFullPlacementId(const Task *askingNode) const;
Container *clone() const;
Container *cloneAlways() const;
+ void setProperty(const std::string& name,const std::string& value);
+ std::string getProperty(const std::string& name) const;
+ void clearProperties();
+ void addComponentName(const std::string& name);
+ std::map<std::string,std::string> getProperties() const;
+ std::map<std::string,std::string> getResourceProperties(const std::string& name) const;
+ void checkCapabilityToDealWith(const ComponentInstance *inst) const throw(YACS::Exception);
+ std::vector<std::string> getKernelContainerNames() const;
int getNumberOfCoresPerWorker() const;
- //! do nothing. because no special actions to do. Only for decorators
- void prepareMaskForExecution() const { }
//
#ifndef SWIG
- void forYourTestsOnly(ForTestOmlyHPContCls *data) const;
- std::map<std::string,std::string> getResourceProperties(const std::string& name) const;
- void addComponentNameSpe(const std::string& name);
- void checkCapabilityToDealWithSpe(const ComponentInstance *inst) const throw(YACS::Exception);
- std::size_t locateTask(const Task *askingNode) const { return _launchModeType->locateTask(askingNode); }
+ std::size_t locateTask(const Task *askingNode) const { return _launchModeType.locateTask(askingNode); }
const SalomeContainerTools &getContainerInfo() const { return _sct; }
- SalomeContainerTools &getContainerInfo() { return _sct; }
std::vector<std::string> getComponentNames() const { return _componentNames; }
- SalomeContainerMonoHelper *getHelperOfTask(const Task *node) { return _launchModeType->getHelperOfTask(node); }
- const SalomeContainerMonoHelper *getHelperOfTask(const Task *node) const { return _launchModeType->getHelperOfTask(node); }
+ int getShutdownLev() const { return _shutdownLevel; }
+ SalomeContainerMonoHelper *getHelperOfTask(const Task *node) { return _launchModeType.getHelperOfTask(node); }
+ const SalomeContainerMonoHelper *getHelperOfTask(const Task *node) const { return _launchModeType.getHelperOfTask(node); }
//
- HomogeneousPoolContainer *getDirectFather() { return NULL; }
- const HomogeneousPoolContainer *getDirectFather() const { return NULL; }
+ YACS::BASES::Mutex& getLocker() { return _mutex; }
#endif
public:
static const char KIND[];
~SalomeHPContainer();
#endif
protected:
+ int _shutdownLevel;
SalomeContainerTools _sct;
+ YACS::BASES::Mutex _mutex;
std::vector<std::string> _componentNames;
- };
-
-#ifndef SWIG
- class YACSRUNTIMESALOME_EXPORT SalomeHPContainerShared : public SalomeHPContainerBase
- {
- public:
- SalomeHPContainerShared(YACS::BASES::AutoConstRefCnt<PartDefinition> pd, SalomeHPContainerVectOfHelper *resShared, SalomeHPContainerBase *directFather);
- HomogeneousPoolContainer *getDirectFather() { return _directFather; }
- const HomogeneousPoolContainer *getDirectFather() const { return _directFather; }
- int getNumberOfCoresPerWorker() const { return _directFather->getNumberOfCoresPerWorker(); }
- std::string getProperty(const std::string& name) const { return _directFather->getProperty(name); }
- void prepareMaskForExecution() const;
- void forYourTestsOnly(ForTestOmlyHPContCls *data) const;
- std::string getName() const;
- std::string getDiscreminantStrOfThis(const Task *askingNode) const;
- public:
- std::string getKind() const;
- void start(const Task *askingNode) throw(Exception);
- Container *clone() const;
- Container *cloneAlways() const;
//
- void allocateFor(const std::vector<const Task *>& nodes);
- std::size_t getNumberOfFreePlace() const;
- private:
- YACS::BASES::AutoRefCnt<SalomeHPContainerBase> _directFather;
- YACS::BASES::AutoConstRefCnt<PartDefinition> _pd;
- //! ids in _launchModeType covered by _pd.
- mutable std::vector<std::size_t> _idsOfKernelContainers;
+ SalomeHPContainerVectOfHelper _launchModeType;
+ std::string _initScript;
};
-#endif
}
}