Version: 8.3.0
ResourcesManager.hxx
Go to the documentation of this file.
1 // Copyright (C) 2007-2016 CEA/DEN, EDF R&D, OPEN CASCADE
2 //
3 // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
4 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
5 //
6 // This library is free software; you can redistribute it and/or
7 // modify it under the terms of the GNU Lesser General Public
8 // License as published by the Free Software Foundation; either
9 // version 2.1 of the License, or (at your option) any later version.
10 //
11 // This library is distributed in the hope that it will be useful,
12 // but WITHOUT ANY WARRANTY; without even the implied warranty of
13 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14 // Lesser General Public License for more details.
15 //
16 // You should have received a copy of the GNU Lesser General Public
17 // License along with this library; if not, write to the Free Software
18 // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
19 //
20 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
21 //
22 
23 #ifndef __RESOURCESMANAGER_HXX__
24 #define __RESOURCESMANAGER_HXX__
25 
27 
28 #include <string>
29 #include <fstream>
30 #include <vector>
31 #include <list>
34 #include <sys/types.h>
35 #include <sys/stat.h>
36 #ifdef WIN32
37 #else
38 #include <unistd.h>
39 #endif
40 
41 #ifdef WIN32
42 #pragma warning(disable:4251) // Warning DLL Interface ...
43 #pragma warning(disable:4290) // Warning Exception ...
44 #endif
45 
46 // --- WARNING ---
47 // The call of BuildTempFileToLaunchRemoteContainer and RmTmpFile must be done
48 // in a critical section to be sure to be clean.
49 // Only one thread should use the SALOME_ResourcesManager class in a SALOME
50 // session.
52 {
54 
55  std::string name;
56  std::string hostname;
59  std::string OS;
60  long nb_proc;
61  long nb_node;
63  long cpu_clock;
64  long mem_mb;
65  std::vector<std::string> componentList;
66  std::vector<std::string> resourceList;
67 };
68 
70  {
71 
72  public:
73 
74  ResourcesManager_cpp(const char *xmlFilePath);
76 
78 
79  std::vector<std::string>
80  GetFittingResources(const resourceParams& params) throw(ResourcesException);
81 
82  std::string Find(const std::string& policy, const std::vector<std::string>& listOfResources) const;
83 
84  void AddResourceInCatalog (const ParserResourcesType & new_resource);
85 
86  void DeleteResourceInCatalog(const char * name);
87 
88  void WriteInXmlFile(std::string xml_file);
89 
90  const MapOfParserResourcesType& ParseXmlFiles();
91 
92  const MapOfParserResourcesType& GetList() const;
93 
95  ParserResourcesType GetResourcesDescr(const std::string & name) const;
96 
97  protected:
98 
99  void SelectOnlyResourcesWithOS(std::vector<std::string>& resources, std::string OS);
100 
101  void KeepOnlyResourcesWithComponent(std::vector<std::string>& resources,
102  const std::vector<std::string>& componentList);
103 
107  void AddDefaultResourceInCatalog();
108 
110  std::list<std::string> _path_resources;
111  std::list<std::string>::iterator _path_resources_it;
112 
115 
117  std::map<std::string , LoadRateManager*> _resourceManagerMap;
118 
120  time_t _lasttime;
121 
123  static const std::string DEFAULT_RESOURCE_NAME;
124  };
125 
126 #endif // __RESOURCESMANAGER_HXX__