Exemplo n.º 1
0
        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();
        }
Exemplo n.º 2
0
 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()));
 }