Salome HOME
95ff5968373760c6dfe174e13dc85012525a36e7
[modules/kernel.git] / src / ResourcesManager / SALOME_ResourcesCatalog_Parser.hxx
1 //  Copyright (C) 2007-2008  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.
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 //  SALOME ResourcesCatalog : implementation of catalog resources parsing (SALOME_ModuleCatalog.idl)
23 //  File   : SALOME_ResourcesCatalog_Parser.hxx
24 //  Author : Estelle Deville
25 //  Module : SALOME
26 //$Header$
27 //
28 #ifndef SALOME_RESOURCES_CATALOG_PARSER
29 #define SALOME_RESOURCES_CATALOG_PARSER
30
31 #include "ResourcesManager_Defs.hxx"
32
33 #include <string>
34 #include <vector>
35 #include <map>
36 #include <iostream>
37
38 enum AccessProtocolType {rsh, ssh};
39
40 enum AccessModeType {interactive, batch};
41
42 enum BatchType {none, pbs, lsf, sge};
43
44 enum MpiImplType {nompi, lam, mpich1, mpich2, openmpi, slurm, prun};
45
46 class RESOURCESMANAGER_EXPORT ResourceDataToSort
47   {
48
49   public:
50     std::string _hostName;
51     unsigned int _nbOfNodes;
52     unsigned int _nbOfProcPerNode;
53     unsigned int _CPUFreqMHz;
54     unsigned int _memInMB;
55     static unsigned int _nbOfNodesWanted;
56     static unsigned int _nbOfProcPerNodeWanted;
57     static unsigned int _CPUFreqMHzWanted;
58     static unsigned int _memInMBWanted;
59
60   public:
61     ResourceDataToSort();
62     ResourceDataToSort(const std::string& hostname,
63                        unsigned int nbOfNodes,
64                        unsigned int nbOfProcPerNode,
65                        unsigned int CPUFreqMHz,
66                        unsigned int memInMB);
67     bool operator< (const ResourceDataToSort& other) const;
68     void Print() const;
69
70   private:
71     unsigned int GetNumberOfPoints() const;
72   };
73
74 struct RESOURCESMANAGER_EXPORT ParserResourcesType
75   {
76     ResourceDataToSort DataForSort;
77     std::string HostName;
78     std::string Alias;
79     AccessProtocolType Protocol;
80     AccessModeType Mode;
81     BatchType Batch;
82     MpiImplType mpi;
83     std::string UserName;
84     std::string AppliPath;
85     std::vector<std::string> ComponentsList;
86     std::vector<std::string> ModulesList;
87     std::string OS;
88     std::string batchQueue;
89     std::string userCommands;
90
91     void Print() const;
92     void Clear();
93   };
94
95 typedef std::map<std::string, ParserResourcesType> MapOfParserResourcesType;
96
97 #endif //SALOME_RESOURCES_CATALOG_PARSER