Salome HOME
- Major update for launcher:
[modules/kernel.git] / src / ResourcesManager / ResourcesManager.hxx
index cc065929c26f611bbba1691a19cb6055e31bdf1e..fa8261e1a606b6f3e580602539e9c35b4a289ce1 100644 (file)
@@ -1,4 +1,4 @@
-//  Copyright (C) 2007-2008  CEA/DEN, EDF R&D, OPEN CASCADE
+//  Copyright (C) 2007-2010  CEA/DEN, EDF R&D, OPEN CASCADE
 //
 //  Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 //  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
@@ -19,6 +19,7 @@
 //
 //  See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+
 #ifndef __RESOURCESMANAGER_HXX__
 #define __RESOURCESMANAGER_HXX__
 
 #include <string>
 #include <fstream>
 #include <vector>
+#include <list>
 #include "SALOME_ResourcesCatalog_Parser.hxx"
 #include "SALOME_ResourcesCatalog_Handler.hxx"
 #include "SALOME_LoadRateManager.hxx"
+#include <sys/types.h>
+#include <sys/stat.h>
+#ifdef WNT
+#else
+#include <unistd.h>
+#endif
+
+#ifdef WNT
+#pragma warning(disable:4251) // Warning DLL Interface ...
+#pragma warning(disable:4290) // Warning Exception ...
+#endif
 
 // --- WARNING ---
 // The call of BuildTempFileToLaunchRemoteContainer and RmTmpFile must be done
 // in a critical section to be sure to be clean.
 // Only one thread should use the SALOME_ResourcesManager class in a SALOME
 // session.
-
-struct machineParams{
+struct resourceParams
+{
+  std::string name;
   std::string hostname;
   std::string OS;
+  unsigned int nb_proc;
   unsigned int nb_node;
   unsigned int nb_proc_per_node;
   unsigned int cpu_clock;
   unsigned int mem_mb;
+  std::vector<std::string> componentList;
+  std::vector<std::string> resourceList;
 };
 
 class RESOURCESMANAGER_EXPORT ResourcesException
@@ -65,54 +82,42 @@ class RESOURCESMANAGER_EXPORT ResourcesManager_cpp
     ~ResourcesManager_cpp();
 
     std::vector<std::string> 
-    GetFittingResources(const machineParams& params,
-                        const std::vector<std::string>& componentList) throw(ResourcesException);
+    GetFittingResources(const resourceParams& params) throw(ResourcesException);
 
-    std::string FindFirst(const std::vector<std::string>& listOfMachines);
-    std::string FindNext(const std::vector<std::string>& listOfMachines);
-    std::string FindBest(const std::vector<std::string>& listOfMachines);
+    std::string Find(const std::string& policy, 
+                     const std::vector<std::string>& listOfResources);
 
-    int AddResourceInCatalog
-    (const machineParams& paramsOfNewResources,
-     const std::vector<std::string>& modulesOnNewResources,
-     const char *alias,
-     const char *userName,
-     AccessModeType mode,
-     AccessProtocolType prot) throw(ResourcesException);
+    void AddResourceInCatalog (const ParserResourcesType & new_resource) throw(ResourcesException);
 
-    void DeleteResourceInCatalog(const char *hostname);
+    void DeleteResourceInCatalog(const char * name);
 
-    void WriteInXmlFile();
+    void WriteInXmlFile(std::string xml_file);
 
-    const MapOfParserResourcesType& ParseXmlFile();
+    const MapOfParserResourcesType& ParseXmlFiles();
 
     const MapOfParserResourcesType& GetList() const;
 
-    ParserResourcesType GetResourcesList(const std::string& machine);
+    ParserResourcesType GetResourcesDescr(const std::string & name);
 
   protected:
     
-    void SelectOnlyResourcesWithOS(std::vector<std::string>& hosts,
-                                  const char *OS) const
-      throw(ResourcesException);
+    void SelectOnlyResourcesWithOS(std::vector<std::string>& resources, std::string OS);
 
-    void KeepOnlyResourcesWithModule(std::vector<std::string>& hosts,
-                                    const std::vector<std::string>& componentList) const
-      throw(ResourcesException);
+    void KeepOnlyResourcesWithComponent(std::vector<std::string>& resources, 
+                                        const std::vector<std::string>& componentList);
 
     //! will contain the path to the ressources catalog
-    std::string _path_resources;
+    std::list<std::string> _path_resources;
+    std::list<std::string>::iterator _path_resources_it;
 
     //! will contain the informations on the data type catalog(after parsing)
     MapOfParserResourcesType _resourcesList;
 
-    //! will contain the informations on the data type catalog(after parsing)
-    MapOfParserResourcesType _resourcesBatchList;
-
-    SALOME_LoadRateManager _dynamicResourcesSelecter;
+    //! a map that contains all the available load rate managers (the key is the name)
+    std::map<std::string , LoadRateManager*> _resourceManagerMap;
 
-    //! different behaviour if $APPLI exists (SALOME Application) 
-    bool _isAppliSalomeDefined;    
+    //! contain the time where resourcesList was created
+    time_t _lasttime;
   };
 
 #endif // __RESOURCESMANAGER_HXX__