49 milli req_recv_timeout{-1};
50 milli req_send_timeout{1000};
54 component_type::connect_p connect_p;
55 std::size_t work_id = 0;
56 bool fast_fib =
false;
65 using parent_type::parent_type;
71 throw std::invalid_argument(
72 "Usage: ./client service_cmode service_addr work_id fast_or_slow N");
75 void startup(
int argc,
char** argv)
override
80 auto ts = state.tx(client_state::creating, client_state::initializing);
86 connect_p.service_cmode = net::cmode_from_string(argv[1]);
88 connect_p.service_addr = argv[2];
90 work_id = std::stoull(argv[3]);
92 if (std::string_view(argv[4]).compare(
"fast") == 0)
94 else if (std::string_view(argv[4]).compare(
"slow") == 0)
99 n = std::stoull(argv[5]);
132 auto ts = state.tx(client_state::initializing, client_state::started);
134 comp().
init({.req_opts = {.recv_timeout = req_recv_timeout.count(),
135 .send_timeout = req_send_timeout.count()}});
146 auto ts = state.tx(client_state::started, client_state::sending_work);
148 auto [
ev, md] =
fired.as_tuple();
163 state.tx(client_state::sending_work, client_state::waiting_work_done);
176 state.tx(client_state::waiting_work_done, client_state::terminating);
178 auto&
ev = recv.event();
186 std::cout <<
"WORK(" <<
ev.work_id <<
") FIB(" << n <<
") = " <<
ev.fib_n
192 auto ts = state.tx(client_state::terminated);
200 pars::info(
SL,
"Fired {} while \"{}\", Application Terminated!",
ev,
203 std::cout << std::format(
"ERROR: {}",
ev) << std::endl;
208 auto ts = state.tx(client_state::terminated);
216 pars::info(
SL,
"Fired {} while \"{}\", Application Terminated!",
ev,
219 std::cout << std::format(
"ERROR: {}",
ev.error) << std::endl;
224 auto ts = state.tx(client_state::terminated);
230 pars::info(
SL,
"Fired {} while \"{}\", Application Terminated!",
231 fired.event(), state.current());
233 std::cout << std::format(
"Client Disconnected!") << std::endl;