tahoma2d/toonz/sources/toonzfarm/tfarm/tfarmserverstub.cpp

126 lines
3.5 KiB
C++
Raw Normal View History

2016-03-19 06:57:51 +13:00
#include "tfarmserver.h"
#include "tfarmexecutor.h"
#include "tsystem.h"
#include "tconvert.h"
#include <vector>
using namespace std;
//------------------------------------------------------------------------------
class TFarmServerStub::Imp final : public TFarmExecutor {
2016-03-19 06:57:51 +13:00
public:
2016-06-15 18:43:10 +12:00
Imp(TFarmServer *server, int port) : TFarmExecutor(port), m_server(server) {
assert(m_server);
}
2016-03-19 06:57:51 +13:00
2016-06-15 18:43:10 +12:00
// TFarmExecutor overrides
2016-06-19 20:06:29 +12:00
QString execute(const std::vector<QString> &argv) override;
2016-03-19 06:57:51 +13:00
2016-06-15 18:43:10 +12:00
TFarmServer *m_server;
2016-03-19 06:57:51 +13:00
};
//------------------------------------------------------------------------------
2016-06-15 18:43:10 +12:00
QString TFarmServerStub::Imp::execute(const std::vector<QString> &argv) {
2016-03-19 06:57:51 +13:00
#ifdef DEBUG
2016-06-15 18:43:10 +12:00
std::cout << "executing " << argv[0].c_str() << endl;
2016-03-19 06:57:51 +13:00
#endif
2016-06-15 18:43:10 +12:00
if (argv.size() > 0) {
2016-03-19 06:57:51 +13:00
#ifdef DEBUG
2016-06-15 18:43:10 +12:00
for (int i = 0; i < (int)argv.size(); ++i) std::cout << argv[i] << " ";
2016-03-19 06:57:51 +13:00
#endif
2016-06-15 18:43:10 +12:00
if (argv[0] == "addTask" && argv.size() == 3) {
int ret = m_server->addTask(argv[1], argv[2]);
return QString::number(ret);
} else if (argv[0] == "terminateTask" && argv.size() > 1) {
int ret = m_server->terminateTask(argv[1]);
return QString::number(ret);
} else if (argv[0] == "getTasks") {
std::vector<QString> tasks;
int ret = m_server->getTasks(tasks);
QString reply(QString::number(ret));
reply += ",";
std::vector<QString>::iterator it = tasks.begin();
for (; it != tasks.end(); ++it) {
reply += *it;
reply += ",";
}
if (!reply.isEmpty()) reply.remove(reply.length() - 1, 1);
return reply;
} else if (argv[0] == "queryHwInfo") {
TFarmServer::HwInfo hwInfo;
m_server->queryHwInfo(hwInfo);
QString ret;
ret += QString::number((int)hwInfo.m_cpuCount);
ret += ",";
ret += QString::number((int)(hwInfo.m_totPhysMem / 1024));
ret += ",";
ret += QString::number((int)(hwInfo.m_availPhysMem / 1024));
ret += ",";
ret += QString::number((int)(hwInfo.m_totVirtMem / 1024));
ret += ",";
ret += QString::number((int)(hwInfo.m_availVirtMem / 1024));
ret += ",";
ret += QString::number(hwInfo.m_type);
return ret;
} else if (argv[0] == "attachController" && argv.size() > 3) {
int port = argv[3].toInt();
m_server->attachController(argv[1], argv[2], port);
return "";
} else if (argv[0] == "detachController" && argv.size() > 3) {
int port = argv[3].toInt();
m_server->detachController(argv[1], argv[2], port);
return "";
}
}
return "";
2016-03-19 06:57:51 +13:00
}
//------------------------------------------------------------------------------
//------------------------------------------------------------------------------
TFarmServerStub::TFarmServerStub(TFarmServer *farmServer, int port)
2016-06-15 18:43:10 +12:00
: m_imp(new Imp(farmServer, port)) {}
2016-03-19 06:57:51 +13:00
//------------------------------------------------------------------------------
2016-06-15 18:43:10 +12:00
TFarmServerStub::~TFarmServerStub() {}
2016-03-19 06:57:51 +13:00
//------------------------------------------------------------------------------
2016-06-15 18:43:10 +12:00
int TFarmServerStub::run() {
m_imp->run();
return m_imp->getExitCode();
2016-03-19 06:57:51 +13:00
}
//------------------------------------------------------------------------------
2016-06-15 18:43:10 +12:00
int TFarmServerStub::shutdown() {
TTcpIpClient client;
2016-03-19 06:57:51 +13:00
2016-06-15 18:43:10 +12:00
int socketId;
int ret =
client.connect(TSystem::getHostName(), "", m_imp->getPort(), socketId);
if (ret == OK) {
ret = client.send(socketId, "shutdown");
}
2016-03-19 06:57:51 +13:00
2016-06-15 18:43:10 +12:00
return ret;
2016-03-19 06:57:51 +13:00
}
//------------------------------------------------------------------------------
2016-06-15 18:43:10 +12:00
int TFarmServerStub::getPort() const { return m_imp->getPort(); }