/* * CheckResultsOperation.hpp * * Created on: Dec 11, 2011 * Author: heber */ #ifndef FRAGMENTCONTROLLER_CHECKRESULTSOPERATION_HPP_ #define FRAGMENTCONTROLLER_CHECKRESULTSOPERATION_HPP_ // include config.h #ifdef HAVE_CONFIG_H #include #endif #include #include #include #include "JobMarket/Connection.hpp" #include "JobMarket/Operations/AsyncOperation.hpp" #include "JobMarket/types.hpp" /** This Operations requests number of present jobs and present results (done * jobs) from the server. * */ class CheckResultsOperation : public AsyncOperation { public: /// Constructor for class CheckResultsOperation. CheckResultsOperation(Connection &_connection, const boost::function _callback_on_success = NoOpCallback, const boost::function _callback_on_failure = NoOpCallback) : AsyncOperation(std::string("checkresults"), _connection, _callback_on_success, _callback_on_failure), jobids(emptyids), jobInfo((size_t)2, 0) {} /// Destructor for class CheckResultsOperation ~CheckResultsOperation() {} public: // virtual function pointer to the connection handler virtual void handle_connect(const boost::system::error_code& e, boost::asio::ip::tcp::resolver::iterator endpoint_iterator); /// Callback function when sending jobids to know state of. void handle_SendJobIds(const boost::system::error_code& e); /// Callback function when doneJobs have been received. void handle_ReceiveJobInfo(const boost::system::error_code& e); /// Setter for internal vector of jobids to check void setJobIds(const std::set &_jobids) { const_cast &>(jobids) = _jobids; } /// Getter for presentJobs size_t getPresentJobs() const; /// Getter for doneJobs size_t getDoneJobs() const; protected: //!> internal ref to the jobids to check const std::set &jobids; /// current jobs left to calculate and currently calculated results std::vector jobInfo; private: //!> internal empty ids vector to use as default ref static const std::set emptyids; }; #endif /* FRAGMENTCONTROLLER_CHECKRESULTSOPERATION_HPP_ */