client_t(multi_throttling_server_t *p, const client_business_card_t &client_bc) : parent(p), target_tickets(0), held_tickets(0), in_use_tickets(0), time_of_last_qps_sample(get_ticks()), requests_since_last_qps_sample(0), running_qps_estimate(0), qps_sample_timer(reallocate_interval_ms, this), give_tickets_addr(client_bc.give_tickets_addr), reclaim_tickets_addr(client_bc.reclaim_tickets_addr), registrant(p->user_data, client_bc.inner_client_business_card), drainer(new auto_drainer_t), request_mailbox(new mailbox_t<void(request_type)>(parent->mailbox_manager, boost::bind(&client_t::on_request, this, _1), mailbox_callback_mode_inline)), relinquish_tickets_mailbox(new mailbox_t<void(int)>(parent->mailbox_manager, boost::bind(&client_t::on_relinquish_tickets, this, _1), mailbox_callback_mode_inline)) { send(parent->mailbox_manager, client_bc.intro_addr, server_business_card_t(request_mailbox->get_address(), relinquish_tickets_mailbox->get_address())); parent->clients.push_back(this); parent->recompute_allocations(); }
client_t(multi_client_server_t *p, const client_business_card_t &client_bc, UNUSED signal_t *interruptor) : registrant(p->user_data), drainer(new auto_drainer_t), request_mailbox(new mailbox_t<void(request_type)>(p->mailbox_manager, std::bind(&client_t::on_request, this, ph::_1, ph::_2))) { send(p->mailbox_manager, client_bc.intro_addr, server_business_card_t(request_mailbox->get_address())); }