Muster SDK  8.5.0
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros
MPools.h
Go to the documentation of this file.
1 /*****************************************************************************
2  **
3  ** Header file for Muster API Pools object
4  **
5  ** Name : MPools.h
6  ** Author : Leonardo Bernardini
7  ** Version : 1.0, Sat Mar 2nd 2013
8  **
9  ** Copyright 2000-2014, Virtual Vertex
10  ** All Rights Reserved.
11  **
12  ** This file contains UNPUBLISHED PROPRIETARY SOURCE CODE.
13  ** The contents of this file may not be disclosed to third parties, copied
14  ** or duplicated in any form, in whole or in part, without the prior written
15  ** permission of the author.
16  **
17  *****************************************************************************/
18 #ifndef MPOOLS_H
19 #define MPOOLS_H
20 
21 #ifdef WIN32
22 // Windows definitions
23 #ifdef MCLIENTLIB_EXPORTS
24 #define MCLIENTLIB_API __declspec(dllexport)
25 #else
26 #define MCLIENTLIB_API __declspec(dllimport)
27 #endif
28 #else
29 
30 #ifndef MCLIENTLIB_EXPORTS
31 #ifdef LINUX
32 #define MCLIENTLIB_API
33 #else
34 #define MCLIENTLIB_API
35 #endif
36 #else
37 #define MCLIENTLIB_API
38 #endif
39 #endif
40 
41 #include <MClientLib/MTimeRule.h>
42 
43 // Disable STL Export warning, member is private, we don't need direct access from the DLL client
44 #if defined(_WIN32)
45 #pragma warning(disable: 4251)
46 #endif // _WIN32
47 
48 #include <string>
49 #include <list>
50 #include <vector>
51 #include <map>
52 #include <set>
53 
54 namespace MClientLib {
55 
59  class MPool;
60 
62  private:
63  std::string hostName;
64  std::string hostIp;
65  MPool* parent;
66  public:
67 #ifndef SWIG
68  MPoolItem& operator=( const MPoolItem& src );
69  MPoolItem( const MPoolItem& src );
70 #endif
71  MPoolItem();
72  MPoolItem(MPool* parent);
73  virtual ~MPoolItem();
74  virtual std::string getHostName() const ;
75  virtual void setHostName(const std::string& _hostName);
76  virtual std::string getHostIp() const;
77  virtual void setHostIp(const std::string& _hostIp);
78  virtual MPool* getParent();
79  virtual void setParent(MPool* parent);
80 
81  static std::vector<MPoolItem> Unmarshall(const std::string& items);
82  static std::string Marshall(const std::vector<MPoolItem>& childs);
83 
84  void castedRelease();
85  };
86 
91  private:
92  std::string poolName;
93  int nodesPriority;
94  int jobsPriority;
95  long id;
96  bool hasNodesPriority;
97  bool hasJobsPriority;
98  std::string autoPoolIpFilter;
99  std::string autoPoolHostnameFilter;
100  std::vector<MPoolItem> childs;
101  std::vector<MClientLib::MTimeRule> timeRules;
102 
103 
104  public:
105  MPool();
106  virtual ~MPool();
107 #ifndef SWIG
108  MPool& operator=( const MPool& src );
109  MPool(const MPool &src);
110  virtual std::vector<MClientLib::MPoolItem>* getInnerNodesContainer();
111  virtual void setNodes(std::vector<MClientLib::MPoolItem>);
112  virtual std::vector<MClientLib::MPoolItem> getNodes();
113  virtual int indexOfNode(MClientLib::MPoolItem node);
114  virtual std::vector<MClientLib::MTimeRule> getTimeRules();
115  virtual void setTimeRules(std::vector<MClientLib::MTimeRule>);
116 #endif
117  virtual long getId();
118  virtual void setId(long _id);
119  virtual std::string getName();
120  virtual void setName(const std::string& _name);
121  virtual int getNodesPriority();
122  virtual void setNodesPriority(int _nodesPriority);
123  virtual int getJobsPriority();
124  virtual void setJobsPriority(int _jobsPriority);
125  virtual bool getHasNodesPriority();
126  virtual void setHasNodesPriority(bool _hasNodesPriority);
127  virtual bool getHasJobsPriority();
128  virtual void setHasJobsPriority(bool _hasJobsPriority);
129  virtual std::string getAutoPoolIpFilter();
130  virtual void setAutoPoolIpFilter(const std::string& _autoPoolIpFilter);
131  virtual std::string getAutoPoolHostnameFilter();
132  virtual void setAutoPoolHostnameFilter(const std::string& _autoPoolHostnameFilter);
133 
134  virtual bool containsNode(const std::string& hostName, const std::string& hostIp);
135  virtual bool containsNodeName(const std::string& hostName);
136  virtual bool containsNodeIp(const std::string& hostIp);
137 
138  virtual bool removeNode(const std::string& hostName, const std::string& hostIp);
139  virtual void addNode(const std::string& hostName, const std::string& hostIp);
140  virtual int indexOfNode(const std::string& hostName, const std::string& hostIp);
141  virtual MClientLib::MPoolItem nodeAtIndex(int index);
142  virtual bool removeNodeAtIndex(int index);
143  virtual int getNodesCount();
144 
145  virtual void addTimeRule(const MClientLib::MTimeRule& rule);
146  virtual MClientLib::MTimeRule getTimeRuleAtIndex(int index);
147  virtual void setTimeRuleAtIndex(int index,const MClientLib::MTimeRule& rule);
148  virtual bool removeTimeRuleAtIndex(int index);
149  virtual int getTimeRulesCount();
150 
151  virtual bool Unmarshall(const std::vector<std::string>& items);
152  virtual const std::string Marshall();
153 
154  void castedRelease();
155 
156  };
157 
162  private:
163  std::vector<MPool*> pools;
164  std::map<std::string,MPool*> poolsNames;
165  public:
166 #ifndef SWIG
167  MPools(const MPools &src);
168  MPools& operator=( const MPools& src );
169  virtual std::vector<MPool*>* getInnerPoolsContainer();
170 #endif
171  MPools();
172  virtual ~MPools();
173 
174  virtual std::vector<std::string> groupOf(const std::string& hostName, const std::string& ipAddress);
175 
176  virtual bool containsNode(const std::string& poolName,const std::string& hostName, const std::string& hostIp);
177  virtual bool containsNodeName(const std::string& poolName,const std::string& hostName);
178  virtual bool containsNodeIp(const std::string& poolName,const std::string& hostIp);
179 
180  virtual bool removeNode(const std::string& poolName,const std::string& hostName, const std::string& hostIp);
181  virtual void addNode(const std::string& poolName,const std::string& hostName, const std::string& hostIp);
182 
183  virtual void addPool(const std::string& poolName);
184  virtual bool removePool(const std::string& poolName);
185  virtual bool containsPool(const std::string& poolName);
186  virtual int indexOfPool(const std::string& poolName);
187  virtual MPool* getPool(const std::string& pool);
188 
189  virtual void addPool(MPool* pool);
190  virtual bool removePool(MPool* pool);
191  virtual int indexOfPool(MPool* pool);
192  virtual bool updatePool(MPool* pool);
193  virtual bool renamePool(MPool* pool, const std::string& newName);
194 
195  virtual std::vector<MPool> getPools();
196  virtual void clear();
197 
198  virtual int getPoolsCount();
199 
200  };
201 }
202 
203 #endif