int Resource::seize(Arrival* arrival, int amount) { int status; // serve now if (room_in_server(amount, arrival->order.get_priority())) { if (arrival->is_monitored()) { arrival->set_start(this->name, sim->now()); arrival->set_activity(this->name, sim->now()); } insert_in_server(sim->verbose, sim->now(), arrival, amount); status = SUCCESS; } // enqueue else if (room_in_queue(amount, arrival->order.get_priority())) { if (arrival->is_monitored()) { arrival->set_start(this->name, sim->now()); arrival->set_activity(this->name, 0); } insert_in_queue(sim->verbose, sim->now(), arrival, amount); status = ENQUEUED; } // reject else { if (sim->verbose) verbose_print(sim->now(), arrival->name, "REJECT"); return REJECTED; } if (is_monitored()) observe(sim->now()); return status; }
int Resource::seize(Arrival* arrival, int amount) { int status; // serve now if (room_in_server(amount, arrival->order.get_priority())) { insert_in_server(sim->verbose, sim->now(), arrival, amount); status = SUCCESS; } // enqueue else if (room_in_queue(amount, arrival->order.get_priority())) { insert_in_queue(sim->verbose, sim->now(), arrival, amount); status = ENQUEUE; } // reject else { if (sim->verbose) verbose_print(sim->now(), arrival->name, "REJECT"); return REJECT; } arrival->register_entity(this); if (is_monitored()) sim->record_resource(name, server_count, queue_count, capacity, queue_size); return status; }