testutil.hpp 780 B

1234567891011121314151617181920212223242526272829303132333435
  1. #pragma once
  2. #include <catch.hpp>
  3. #include <zmq.hpp>
  4. #if defined(ZMQ_CPP11)
  5. inline std::string bind_ip4_loopback(zmq::socket_t &socket)
  6. {
  7. socket.bind("tcp://127.0.0.1:*");
  8. std::string endpoint(100, ' ');
  9. endpoint.resize(socket.get(zmq::sockopt::last_endpoint, zmq::buffer(endpoint)));
  10. return endpoint;
  11. }
  12. struct common_server_client_setup
  13. {
  14. common_server_client_setup(bool initialize = true)
  15. {
  16. if (initialize)
  17. init();
  18. }
  19. void init()
  20. {
  21. endpoint = bind_ip4_loopback(server);
  22. REQUIRE_NOTHROW(client.connect(endpoint));
  23. }
  24. zmq::context_t context;
  25. zmq::socket_t server{context, zmq::socket_type::pair};
  26. zmq::socket_t client{context, zmq::socket_type::pair};
  27. std::string endpoint;
  28. };
  29. #endif