Salome HOME
merge from BR_V51_AR 7 may 09
[modules/kernel.git] / src / ResourcesManager / SALOME_ResourcesCatalog_Parser.hxx
index 989db2f44d6790cb39ced393c3b8fdd9edeb7c17..e4ad2d55f1b80723e31b95667ed11e54361c0e8c 100755 (executable)
-//  SALOME ResourcesCatalog : implementation of catalog resources parsing (SALOME_ModuleCatalog.idl)
+//  Copyright (C) 2007-2008  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
+//
+//  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.
 //
-//  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 
+//  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
 //
+//  SALOME ResourcesCatalog : implementation of catalog resources parsing (SALOME_ModuleCatalog.idl)
 //  File   : SALOME_ResourcesCatalog_Parser.hxx
 //  Author : Estelle Deville
 //  Module : SALOME
 //$Header$
-
+//
 #ifndef SALOME_RESOURCES_CATALOG_PARSER
 #define SALOME_RESOURCES_CATALOG_PARSER
 
+#include "ResourcesManager_Defs.hxx"
+
 #include <string>
 #include <vector>
+#include <list>
 #include <map>
 #include <iostream>
 
-typedef std::map<std::string, std::string> MapOfModulesPath;
-
 enum AccessProtocolType {rsh, ssh};
 
 enum AccessModeType {interactive, batch};
 
-class ResourceDataToSort {
-public:
-  std::string _hostName;
-  unsigned int _nbOfNodes;
-  unsigned int _nbOfProcPerNode;
-  unsigned int _CPUFreqMHz;
-  unsigned int _memInMB;
-  static unsigned int _nbOfNodesWanted;
-  static unsigned int _nbOfProcPerNodeWanted;
-  static unsigned int _CPUFreqMHzWanted;
-  static unsigned int _memInMBWanted;
-public:
-  ResourceDataToSort();
-  ResourceDataToSort(const std::string& hostname,unsigned int nbOfNodes,unsigned int nbOfProcPerNode,unsigned int CPUFreqMHz,unsigned int memInMB);
-  bool operator< (const ResourceDataToSort& other) const;
-  void Print() const;
-private:
-  unsigned int GetNumberOfPoints() const;
-//   friend class SALOME_ResourcesCatalog_Handler;
-//   friend class SALOME_ResourcesManager;
-//   friend struct ParserResourcesType;
+enum BatchType {none, pbs, lsf, sge};
+
+enum MpiImplType {nompi, lam, mpich1, mpich2, openmpi, slurm, prun};
+
+class RESOURCESMANAGER_EXPORT ResourceDataToSort
+  {
+
+  public:
+    std::string _hostName;
+    unsigned int _nbOfNodes;
+    unsigned int _nbOfProcPerNode;
+    unsigned int _CPUFreqMHz;
+    unsigned int _memInMB;
+    static unsigned int _nbOfNodesWanted;
+    static unsigned int _nbOfProcPerNodeWanted;
+    static unsigned int _CPUFreqMHzWanted;
+    static unsigned int _memInMBWanted;
+
+  public:
+    ResourceDataToSort();
+    ResourceDataToSort(const std::string& hostname,
+                       unsigned int nbOfNodes,
+                       unsigned int nbOfProcPerNode,
+                       unsigned int CPUFreqMHz,
+                       unsigned int memInMB);
+    bool operator< (const ResourceDataToSort& other) const;
+    void Print() const;
+
+  private:
+    unsigned int GetNumberOfPoints() const;
+  };
+
+struct RESOURCESMANAGER_EXPORT ParserResourcesClusterMembersType
+{
+  std::string HostName;
+  AccessProtocolType Protocol;
+  std::string UserName;
+  std::string AppliPath;
+  ResourceDataToSort DataForSort;
 };
 
-struct ParserResourcesType {
+struct RESOURCESMANAGER_EXPORT ParserResourcesType
+{
   ResourceDataToSort DataForSort;
+  std::string HostName;
   std::string Alias;
   AccessProtocolType Protocol;
   AccessModeType Mode;
+  BatchType Batch;
+  MpiImplType mpi;
   std::string UserName;
-  MapOfModulesPath ModulesPath;
-  std::string PreReqFilePath;
+  std::string AppliPath;
+  std::vector<std::string> ComponentsList;
+  std::vector<std::string> ModulesList;
   std::string OS;
+  std::string batchQueue;
+  std::string userCommands;
+  std::string use;
+  std::list<ParserResourcesClusterMembersType> ClusterMembersList;
+  unsigned int nbOfProc;
 
-  void Print(){
-    std::cout << "##############*****" << std::endl; 
-    std::cout << "HostName : " << DataForSort._hostName << std::endl;
-    std::cout << "Alias : " << Alias << std::endl;
-    std::cout << "Protocol : " << Protocol << std::endl;
-    std::cout << "Mode : " << Mode << std::endl;
-    std::cout << "UserName : " << UserName << std::endl;
-    std::cout << "Modules : " << std::endl;
-    int i=1;
-    for(std::map<std::string, std::string>::iterator iter=ModulesPath.begin();iter!=ModulesPath.end();iter++)
-       {
-         std::cout << "    Module " << i++ << " called : " << (*iter).first << " with path : " << (*iter).second << std::endl;
-       }
-    std::cout << "PreReqFilePath : " << PreReqFilePath << std::endl;
-    std::cout << "OS : " << OS << std::endl;
-    DataForSort.Print();
-  }
+  void Print();
+  void Clear();
 };
 
 typedef std::map<std::string, ParserResourcesType> MapOfParserResourcesType;
+typedef std::map<std::string, ParserResourcesType>::iterator MapOfParserResourcesType_it;
 
 #endif //SALOME_RESOURCES_CATALOG_PARSER