diff --git a/src/core/efw/JobClient.cc b/src/core/efw/JobClient.cc index afedcaa3..de6c29d9 100644 --- a/src/core/efw/JobClient.cc +++ b/src/core/efw/JobClient.cc @@ -19,6 +19,12 @@ JobClient::JobClient(const std::string& server, int port) m_job_throughput = 1; // client gets only one job at the first request } +JobClient::~JobClient() +{ + // Send back completed jobs to the server + sendResultsToServer(); +} + bool JobClient::connectToServer() { // Connect to server @@ -190,6 +196,13 @@ bool JobClient::sendResult(ExperimentData& result) //Reset timer for new time measurement m_job_runtime.reset(); + return sendResultsToServer(); + } +} + +bool JobClient::sendResultsToServer() +{ + if (m_results.size() != 0) { if (!connectToServer()) { return false; } @@ -225,6 +238,7 @@ bool JobClient::sendResult(ExperimentData& result) close(m_sockfd); return true; } + return true; } } // end-of-namespace: fail diff --git a/src/core/efw/JobClient.hpp b/src/core/efw/JobClient.hpp index 8e517989..c0c8b8b2 100644 --- a/src/core/efw/JobClient.hpp +++ b/src/core/efw/JobClient.hpp @@ -35,10 +35,12 @@ private: std::deque m_results; bool connectToServer(); - + bool sendResultsToServer(); FailControlMessage_Command tryToGetExperimentData(ExperimentData& exp); + public: JobClient(const std::string& server = SERVER_COMM_HOSTNAME, int port = SERVER_COMM_TCP_PORT); + ~JobClient(); /** * Receive experiment data set from (remote) JobServer * The caller (experiment developer) is responsible for