Muster SDK  8.5.0
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros
MNode.h
Go to the documentation of this file.
1 /*****************************************************************************
2  **
3  ** Header file for Muster API Node object
4  **
5  ** Name : MNode.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 MNODE_H
19 #define MNODE_H
20 
21 #ifdef Pause
22 // Win32 headers #define Pause
23 #undef Pause
24 #endif
25 
26 #ifdef WIN32
27 // Windows definitions
28 #ifdef MCLIENTLIB_EXPORTS
29 #define MCLIENTLIB_API __declspec(dllexport)
30 #else
31 #define MCLIENTLIB_API __declspec(dllimport)
32 #endif
33 #else
34 
35 #ifndef MCLIENTLIB_EXPORTS
36 #ifdef LINUX
37 #define MCLIENTLIB_API
38 #else
39 #define MCLIENTLIB_API
40 #endif
41 #else
42 #define MCLIENTLIB_API
43 #endif
44 #endif
45 
46 // Disable STL Export warning, member is private, we don't need direct access from the DLL client
47 #if defined(_WIN32)
48 #pragma warning(disable: 4251)
49 #endif // _WIN32
50 
51 #include <string>
52 #include <vector>
53 #include <MClientLib/MError.h>
54 #include <MClientLib/MDrive.h>
55 
56 namespace MClientLib {
57 
62  public:
63 
68  kInstanceStatusUndefined = 0x00,
69  kInstanceStatusIdle = 0x01,
70  kInstanceStatusPaused = 0x02,
71  // OCCUPIED FLAGS, STATUS THAT GOES INTO OCCUPIED STATUS MAY BE INSIDE THIS RANGE
72  kInstanceStatusCompleted = 0x04,
73  kInstanceStatusInprogress = 0x08,
74  kInstanceStatusStarting = 0x10,
75  kInstanceStatusPrechunk = 0x20,
76  // FREE RESERVED BITS !!!
77  kInstanceStatusPostchunk = 0x1000,
78  // OCCUPIED FLAGS, STATUS THAT GOES INTO OCCUPIED STATUS MAY BE INSIDE THIS RANGE
79  kInstanceStatusStreamingTemplates = 0x2000,
80  kInstanceStatusJustKilledTheProcess = 0x4000,
81  kInstanceStatusRequiresUpgrade = 0x8000,
82  kInstanceStatusLockedByTimetable = 0x10000,
83  kInstanceStatusLockedByLoggedUser = 0x20000,
84  kInstanceStatusOffline = 0x40000,
85  kInstanceStatusLockedByProcess = 0x80000,
86  kInstanceStatusLockedByPython = 0x100000
87  };
88 
91  kProcessPriorityIdle = 1,
92  kProcessPriorityNormal = 2,
93  kProcessPriorityHigh = 3,
94  kProcessPriorityRealtime = 4
95  } ;
96 
104  kSysEventWakeup
105  } ;
106 
107  private:
108  long chunkId;
109  long nodeId;
110  int hostPlatform;
111  std::string hostName;
112  std::string instanceName;
113  std::string hostIP;
114  std::string statusDescription;
115  int processPriority;
116  long jobId;
117  int status;
118  bool willPause;
119  std::string currentJobName;
120  std::string currentChunkName;
121  std::string currentChunkNameNoFP;
122  std::string cpuUsage;
123  std::string ramUsage;
124  std::string supportedTemplates;
125  std::string notes;
126  bool realtimeLogEnabled;
127  int selectionPriority;
128  std::string hostMacAddress;
129  std::string currentCommandLine;
130  std::string stringJobsExclusions;
131  std::string stringTemplatesExclusions;
132  double currentJobTotalProgress;
133  std::string physicalCoreType;
134  double physicalCoreSpeed;
135  int physicalCpusCount;
136  int physicalCoresCount;
137  int logicalThreadsCount;
138  std::string platformDescription;
139  long long platformAffinitiyMask;
140  long long int updateTime;
141  std::string clientVersion;
142  int instanceNumber;
143  std::vector<MClientLib::MDrive> physicalDisks;
144  time_t processStartTime;
145 
146  public:
147  MNode();
148  virtual ~MNode();
149 
150  virtual void Clear();
151  virtual long getChunkId();
152  virtual long getNodeId();
153  virtual int getHostPlatform();
154  virtual const std::string getHostName();
155  virtual const std::string getInstanceName();
156  virtual const std::string getHostIP();
157  virtual const std::string getStatusDescription();
158  virtual int getProcessPriority();
159  virtual long getJobId();
160  virtual int getStatus();
161  virtual bool getWillPause();
162  virtual const std::string getCurrentJobName();
163  virtual const std::string getCurrentChunkName();
164  virtual const std::string getCurrentChunkNameNoFP();
165  virtual const std::string getCpuUsage();
166  virtual const std::string getRamUsage();
167  virtual const std::string getSupportedTemplates();
168  virtual const std::string getNotes();
169  virtual bool getRealtimeLogEnabled();
170  virtual int getSelectionPriority();
171  virtual const std::string getHostMacAddresses();
172  virtual const std::string getCurrentCommandLine();
173  virtual double getCurrentJobTotalProgress();
174  virtual const std::string getPhysicalCoreType();
175  virtual double getPhysicalCoreSpeed();
176  virtual int getPhysicalCpusCount();
177  virtual int getPhysicalCoresCount();
178  virtual const std::string getPlatformDescription();
179  virtual long long getProcsAffinityMask();
180  virtual long long int getUpdateTime();
181  virtual const std::string getClientVersion();
182  virtual int getLogicalThreadsCount();
183  virtual int getInstanceNumber();
184  virtual const std::vector<MClientLib::MDrive> getPhysicalDisks();
185  virtual const std::string getJobsExclusion();
186  virtual const std::string getTemplatesExclusion();
187  virtual time_t getProcessStartTime();
188 
189  virtual void setChunkId(long _currentChunkId);
190  virtual void setNodeId(long _nodeId);
191  virtual void setHostPlatform(int _hostPlatform);
192  virtual void setHostName(const std::string& _hostName);
193  virtual void setInstanceName(const std::string& _instanceName);
194  virtual void setHostIP(const std::string& _hostIp);
195  virtual void setStatusDescription(const std::string& _statusDescription);
196  virtual void setProcessPriority(int _processPriority);
197  virtual void setJobId(long _jobId);
198  virtual void setStatus(int _status);
199  virtual void setWillPause(bool _willPause);
200  virtual void setCurrentJobName(const std::string& _currentJobName);
201  virtual void setCurrentChunkName(const std::string& currentChunkName);
202  virtual void setCurrentChunkNameNoFP(const std::string& _currentChunkNameNoFP);
203  virtual void setCpuUsage(const std::string& _cpuUsage);
204  virtual void setRamUsage(const std::string& _ramUsage);
205  virtual void setSupportedTemplates(const std::string& _supportedTemplates);
206  virtual void setNotes(std::string _notes);
207  virtual void setRealtimeLogEnabled(bool _realtimeLogEnabled);
208  virtual void setSelectionPriority(int _selectionPriority);
209  virtual void setHostMacAddresses(const std::string& _hostMacAddress);
210  virtual void setCurrentCommandLine(const std::string& _currentCommandLine);
211  virtual void setCurrentJobTotalProgress(double _currentJobTotalProgress);
212  virtual void setPhysicalCoreType(const std::string& _physicalCoreType);
213  virtual void setPhysicalCoreSpeed(double _physicalCoreSpeed);
214  virtual void setPhysicalCpusCount(int _physicalCpusCount);
215  virtual void setPhysicalCoresCount(int _physicalCoresCount);
216  virtual void setPlatformDescription(const std::string& _platformDescription);
217  virtual void setProcsAffinityMask(long long _platformAffinitiyMask);
218  virtual void setUpdateTime(long long int _updateTime);
219  virtual void setClientVersion(const std::string& version);
220  virtual void setLogicalThreadsCount(int);
221  virtual void setInstanceNumber(int);
222  virtual void setJobsExclusion(const std::string& exclusion);
223  virtual void setTemplatesExclusion(const std::string& exclusion);
224  virtual void setPhysicalDisks(std::vector<MClientLib::MDrive>*); // Disks stats
225  virtual void addUnitToPhysicalDisks(MClientLib::MDrive*);
226  virtual void clearPhysicalDisks();
227  virtual void setProcessStartTime(time_t startTime);
228  virtual bool Unmarshall(const std::vector<std::string>& items);
229  virtual const std::string Marshall();
230 
231  void castedRelease();
232  };
233 }
234 
235 #define IS_HOST_OCCUPIED(x) (x >= MClientLib::MNode::kInstanceStatusCompleted && x <= MClientLib::MNode::kInstanceStatusPostchunk)
236 
237 #endif