| |
| |
| #ifndef TFARMCONTROLLER_H |
| #define TFARMCONTROLLER_H |
| |
| #include <vector> |
| |
| using std::vector; |
| |
| #include "tfarmtask.h" |
| |
| #include "tconvert.h" |
| |
| |
| class TFilePath; |
| |
| #ifdef TFARMAPI |
| #undef TFARMAPI |
| #endif |
| |
| #ifdef WIN32 |
| #ifdef TFARM_EXPORTS |
| #define TFARMAPI __declspec(dllexport) |
| #else |
| #define TFARMAPI __declspec(dllimport) |
| #endif |
| #else |
| #define TFARMAPI |
| #endif |
| |
| |
| |
| enum ServerState { |
| Ready, |
| Busy, |
| NotResponding, |
| Down, |
| Offline, |
| ServerUnknown |
| }; |
| |
| class ServerIdentity |
| { |
| public: |
| ServerIdentity(const QString &id, const QString &name) |
| : m_id(id), m_name(name) {} |
| |
| QString m_id; |
| QString m_name; |
| }; |
| |
| class ServerInfo |
| { |
| public: |
| QString m_name; |
| QString m_ipAddress; |
| QString m_portNumber; |
| |
| ServerState m_state; |
| |
| QString m_platform; |
| |
| int m_cpuCount; |
| unsigned int m_totPhysMem; |
| unsigned int m_totVirtMem; |
| |
| |
| unsigned int m_availPhysMem; |
| unsigned int m_availVirtMem; |
| QString m_currentTaskId; |
| }; |
| |
| |
| |
| class TaskShortInfo |
| { |
| public: |
| TaskShortInfo(const QString &id, const QString &name, TaskState status) |
| : m_id(id), m_name(name), m_status(status) {} |
| |
| QString m_id; |
| QString m_name; |
| TaskState m_status; |
| }; |
| |
| |
| |
| class TFARMAPI TFarmController |
| { |
| public: |
| virtual ~TFarmController() {} |
| |
| virtual QString addTask(const TFarmTask &task, bool suspended) = 0; |
| |
| virtual void removeTask(const QString &id) = 0; |
| virtual void suspendTask(const QString &id) = 0; |
| virtual void activateTask(const QString &id) = 0; |
| virtual void restartTask(const QString &id) = 0; |
| |
| virtual void getTasks(vector<QString> &tasks) = 0; |
| virtual void getTasks(const QString &parentId, vector<QString> &tasks) = 0; |
| virtual void getTasks(const QString &parentId, vector<TaskShortInfo> &tasks) = 0; |
| |
| virtual void queryTaskInfo(const QString &id, TFarmTask &task) = 0; |
| |
| virtual void queryTaskShortInfo( |
| const QString &id, |
| QString &parentId, |
| QString &name, |
| TaskState &status) = 0; |
| |
| |
| virtual void attachServer(const QString &name, const QString &addr, int port) = 0; |
| |
| |
| virtual void detachServer(const QString &name, const QString &addr, int port) = 0; |
| |
| |
| virtual void taskSubmissionError(const QString &taskId, int errCode) = 0; |
| |
| |
| virtual void taskProgress( |
| const QString &taskId, |
| int step, |
| int stepCount, |
| int frameNumber, |
| FrameState state) = 0; |
| |
| |
| virtual void taskCompleted(const QString &taskId, int exitCode) = 0; |
| |
| |
| virtual void getServers(vector<ServerIdentity> &servers) = 0; |
| |
| |
| virtual ServerState queryServerState2(const QString &id) = 0; |
| |
| |
| virtual void queryServerInfo(const QString &id, ServerInfo &info) = 0; |
| |
| |
| virtual void activateServer(const QString &id) = 0; |
| |
| |
| |
| virtual void deactivateServer(const QString &id, bool completeRunningTasks = true) = 0; |
| }; |
| |
| |
| |
| class TFARMAPI ControllerData |
| { |
| public: |
| ControllerData(const QString &hostName = "", const QString &ipAddr = "", int port = 0) |
| : m_hostName(hostName), m_ipAddress(ipAddr), m_port(port) |
| { |
| } |
| |
| bool operator==(const ControllerData &rhs) |
| { |
| return m_hostName == rhs.m_hostName && |
| m_ipAddress == rhs.m_ipAddress && |
| m_port == rhs.m_port; |
| } |
| |
| QString m_hostName; |
| QString m_ipAddress; |
| int m_port; |
| }; |
| |
| |
| |
| class TFARMAPI TFarmControllerFactory |
| { |
| public: |
| TFarmControllerFactory(); |
| int create(const ControllerData &data, TFarmController **controller); |
| int create(const QString &hostname, int port, TFarmController **controller); |
| }; |
| |
| |
| |
| void TFARMAPI loadControllerData(const TFilePath &fp, ControllerData &data); |
| |
| #endif |
| |