| #pragma once |
| |
| #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 |