Files
fail/core/jobserver/JobClient.hpp

60 lines
1.6 KiB
C++

#ifndef __JOB_CLIENT_H__
#define __JOB_CLIENT_H__
#include <string>
#include <ctime>
#include <stdlib.h>
#include <unistd.h>
#include <iostream>
#include "SocketComm.hpp"
#include "controller/ExperimentData.hpp"
#include "jobserver/messagedefs/FailControlMessage.pb.h"
#include "config/FailConfig.hpp"
namespace fail {
/**
* \class JobClient
*
* \brief Manages communication with JobServer
* The Minion's JobClient requests ExperimentData and returns results.
*/
class JobClient {
private:
std::string m_server;
int m_server_port;
struct hostent* m_server_ent;
int m_sockfd;
bool connectToServer();
FailControlMessage_Command tryToGetExperimentData(ExperimentData& exp);
public:
// FIXME: This should be a const reference to std::string...
JobClient(std::string server = "localhost", int port = 1111);
/**
* Receive experiment data set from (remote) JobServer
* The caller (experiment developer) is responsible for
* allocating his ExperimentData object.
*
* @param exp Reference to a ExperimentData object allocated by the caller!
* @return \c true if parameter have been received and put into \c exp, \c false else.
*/
bool getParam(ExperimentData& exp);
/**
* Send back experiment result to the (remote) JobServer
* The caller (experiment developer) is responsible for
* destroying his ExperimentData object afterwards.
*
* @param result Reference to the ExperimentData holding result values
* @return \c true Result successfully sent, \c false else.
*/
bool sendResult(ExperimentData& result);
};
} // end-of-namespace: fail
#endif // __JOB_CLIENT_H__