Skip to content
Snippets Groups Projects
Commit d4d331fd authored by Jonathan Hanks's avatar Jonathan Hanks
Browse files

Making a library version of the run_number client functionality.

git-svn-id: https://redoubt.ligo-wa.caltech.edu/svn/advLigoRTS/trunk@4377 6dcd42c9-f523-4c6d-aada-af552506706e
parent f5132b3c
No related branches found
No related tags found
No related merge requests found
......@@ -6,12 +6,16 @@ add_executable(run_number run_number_main.cc run_number.cc run_number.hh)
target_link_libraries(run_number PUBLIC zmq)
target_compile_features(run_number PRIVATE cxx_nullptr)
add_library(run_number_client STATIC run_number_client.cc run_number_client.hh)
target_link_libraries(run_number_client PUBLIC zmq)
target_include_directories(run_number_client PUBLIC ${CMAKE_CURRENT_SOURCE_DIR})
add_executable(test_run_number tests/test_main.cc tests/test_run_number.cc tests/test_run_number_structs.cc run_number.cc run_number.hh)
target_include_directories(test_run_number PRIVATE ${CATCH_PATH})
target_compile_features(test_run_number PRIVATE cxx_nullptr)
add_executable(run_number_test_client run_number_test_client.cc)
target_link_libraries(run_number_test_client PUBLIC zmq)
target_link_libraries(run_number_test_client PUBLIC run_number_client)
add_test(_rn_basic_run_number_tests_ test_run_number)
#include <zmq.hpp>
#include "run_number_structs.h"
#include "run_number_client.hh"
namespace daqd_run_number {
int get_run_number(const std::string& target, const std::string& hash)
{
daqd_run_number_req_v1_t req;
if (hash.size() > sizeof(req.hash)) return 0;
req.version = 1;
req.hash_size = static_cast<short>(hash.size());
memcpy(&req.hash[0], hash.data(), hash.size());
zmq::context_t context(1);
zmq::socket_t requestor(context, ZMQ_REQ);
zmq::message_t request(sizeof(req));
memcpy(request.data(), &req, sizeof(req));
requestor.connect(target);
requestor.send(request);
zmq::message_t resp_msg;
requestor.recv(&resp_msg);
if (resp_msg.size() != sizeof(daqd_run_number_resp_v1_t)) return 0;
daqd_run_number_resp_v1_t* resp = reinterpret_cast<daqd_run_number_resp_v1_t*>(resp_msg.data());
if (resp->version != 1) return 0;
return resp->number;
}
}
\ No newline at end of file
#ifndef DAQD_RUN_NUMBER_CLIENT_HH
#define DAQD_RUN_NUMBER_CLIENT_HH
#include <string>
namespace daqd_run_number {
int get_run_number(const std::string& target, const std::string& hash);
}
#endif // DAQD_RUN_NUMBER_CLIENT_HH
\ No newline at end of file
......@@ -2,8 +2,7 @@
#include <iostream>
#include <string>
#include <zmq.hpp>
#include "run_number_structs.h"
#include "run_number_client.hh"
bool parse_args(int argc, char *argv[], std::string& target, std::string& hash) {
assert(argc >= 1);
......@@ -37,29 +36,8 @@ int main(int argc, char *argv[]) {
return 1;
}
daqd_run_number_req_v1_t req;
assert(hash.size() <= sizeof(req.hash));
req.version = 1;
req.hash_size = static_cast<short>(hash.size());
memcpy(&req.hash[0], hash.data(), hash.size());
zmq::context_t context(1);
zmq::socket_t requestor(context, ZMQ_REQ);
zmq::message_t request(sizeof(req));
memcpy(request.data(), &req, sizeof(req));
requestor.connect(target);
requestor.send(request);
zmq::message_t resp_msg;
requestor.recv(&resp_msg);
assert(resp_msg.size() == sizeof(daqd_run_number_resp_v1_t));
daqd_run_number_resp_v1_t* resp = reinterpret_cast<daqd_run_number_resp_v1_t*>(resp_msg.data());
assert(resp->version == 1);
std::cout << "The new run number is " << resp->number << std::endl;
int number = daqd_run_number::get_run_number(target, hash);
std::cout << "The new run number is " << number << std::endl;
return 0;
}
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment