Muster SDK  8.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  };
87 
88  private:
89  long chunkId;
90  long nodeId;
91  int hostPlatform;
92  std::string hostName;
93  std::string instanceName;
94  std::string hostIP;
95  std::string statusDescription;
96  int processPriority;
97  long jobId;
98  int status;
99  bool willPause;
100  std::string currentJobName;
101  std::string currentChunkName;
102  std::string currentChunkNameNoFP;
103  std::string cpuUsage;
104  std::string ramUsage;
105  std::string supportedTemplates;
106  std::string notes;
107  bool realtimeLogEnabled;
108  int selectionPriority;
109  std::string hostMacAddress;
110  std::string currentCommandLine;
111  std::string stringJobsExclusions;
112  std::string stringTemplatesExclusions;
113  double currentJobTotalProgress;
114  std::string physicalCoreType;
115  double physicalCoreSpeed;
116  int physicalCpusCount;
117  int physicalCoresCount;
118  int logicalThreadsCount;
119  std::string platformDescription;
120  long long platformAffinitiyMask;
121  long long int updateTime;
122  std::string clientVersion;
123  int instanceNumber;
124  std::vector<MClientLib::MDrive> physicalDisks;
125 
126  public:
127  MNode();
128  virtual ~MNode();
129 
130  virtual void Clear();
131  virtual long getChunkId();
132  virtual long getNodeId();
133  virtual int getHostPlatform();
134  virtual const std::string getHostName();
135  virtual const std::string getInstanceName();
136  virtual const std::string getHostIP();
137  virtual const std::string getStatusDescription();
138  virtual int getProcessPriority();
139  virtual long getJobId();
140  virtual int getStatus();
141  virtual bool getWillPause();
142  virtual const std::string getCurrentJobName();
143  virtual const std::string getCurrentChunkName();
144  virtual const std::string getCurrentChunkNameNoFP();
145  virtual const std::string getCpuUsage();
146  virtual const std::string getRamUsage();
147  virtual const std::string getSupportedTemplates();
148  virtual const std::string getNotes();
149  virtual bool getRealtimeLogEnabled();
150  virtual int getSelectionPriority();
151  virtual const std::string getHostMacAddresses();
152  virtual const std::string getCurrentCommandLine();
153  virtual double getCurrentJobTotalProgress();
154  virtual const std::string getPhysicalCoreType();
155  virtual double getPhysicalCoreSpeed();
156  virtual int getPhysicalCpusCount();
157  virtual int getPhysicalCoresCount();
158  virtual const std::string getPlatformDescription();
159  virtual long long getProcsAffinityMask();
160  virtual long long int getUpdateTime();
161  virtual const std::string getClientVersion();
162  virtual int getLogicalThreadsCount();
163  virtual int getInstanceNumber();
164  virtual const std::vector<MClientLib::MDrive> getPhysicalDisks();
165  virtual const std::string getJobsExclusion();
166  virtual const std::string getTemplatesExclusion();
167 
168  virtual void setChunkId(long _currentChunkId);
169  virtual void setNodeId(long _nodeId);
170  virtual void setHostPlatform(int _hostPlatform);
171  virtual void setHostName(const std::string& _hostName);
172  virtual void setInstanceName(const std::string& _instanceName);
173  virtual void setHostIP(const std::string& _hostIp);
174  virtual void setStatusDescription(const std::string& _statusDescription);
175  virtual void setProcessPriority(int _processPriority);
176  virtual void setJobId(long _jobId);
177  virtual void setStatus(int _status);
178  virtual void setWillPause(bool _willPause);
179  virtual void setCurrentJobName(const std::string& _currentJobName);
180  virtual void setCurrentChunkName(const std::string& currentChunkName);
181  virtual void setCurrentChunkNameNoFP(const std::string& _currentChunkNameNoFP);
182  virtual void setCpuUsage(const std::string& _cpuUsage);
183  virtual void setRamUsage(const std::string& _ramUsage);
184  virtual void setSupportedTemplates(const std::string& _supportedTemplates);
185  virtual void setNotes(std::string _notes);
186  virtual void setRealtimeLogEnabled(bool _realtimeLogEnabled);
187  virtual void setSelectionPriority(int _selectionPriority);
188  virtual void setHostMacAddresses(const std::string& _hostMacAddress);
189  virtual void setCurrentCommandLine(const std::string& _currentCommandLine);
190  virtual void setCurrentJobTotalProgress(double _currentJobTotalProgress);
191  virtual void setPhysicalCoreType(const std::string& _physicalCoreType);
192  virtual void setPhysicalCoreSpeed(double _physicalCoreSpeed);
193  virtual void setPhysicalCpusCount(int _physicalCpusCount);
194  virtual void setPhysicalCoresCount(int _physicalCoresCount);
195  virtual void setPlatformDescription(const std::string& _platformDescription);
196  virtual void setProcsAffinityMask(long long _platformAffinitiyMask);
197  virtual void setUpdateTime(long long int _updateTime);
198  virtual void setClientVersion(const std::string& version);
199  virtual void setLogicalThreadsCount(int);
200  virtual void setInstanceNumber(int);
201  virtual void setJobsExclusion(const std::string& exclusion);
202  virtual void setTemplatesExclusion(const std::string& exclusion);
203  virtual void setPhysicalDisks(std::vector<MClientLib::MDrive>*); // Disks stats
204  virtual void addUnitToPhysicalDisks(MClientLib::MDrive*);
205  virtual void clearPhysicalDisks();
206 
207  virtual bool Unmarshall(std::vector<std::string>& items);
208  virtual const std::string Marshall();
209  };
210 }
211 
212 #define IS_HOST_OCCUPIED(x) (x >= MClientLib::MNode::kInstanceStatusCompleted && x <= MClientLib::MNode::kInstanceStatusPostchunk)
213 
214 #endif