Ejemplo n.º 1
0
int Resource::post_release() {
  // serve another
  while (queue_count) 
    if (!try_serve_from_queue(sim->verbose, sim->now())) break;
    
  if (is_monitored()) observe(sim->now());
  return SUCCESS;
}
Ejemplo n.º 2
0
int Resource::post_release() {
  // serve another
  while (queue_count)
    if (!try_serve_from_queue(sim->verbose, sim->now()))
      break;

  if (is_monitored())
    sim->record_resource(name, server_count, queue_count, capacity, queue_size);
  return SUCCESS;
}
Ejemplo n.º 3
0
void Resource::set_capacity(int value) {
  if (capacity == value) return;
  int last = capacity;
  capacity = value;
  if (capacity > last || capacity < 0) {
    // serve another
    while (queue_count) 
      if (!try_serve_from_queue(sim->verbose, sim->now())) break;
  } else if (capacity < last) {
    while (server_count > capacity) 
      if (!try_free_server(sim->verbose, sim->now())) break;
  }
  if (is_monitored()) observe(sim->now());
}
Ejemplo n.º 4
0
void Resource::set_capacity(int value) {
  if (capacity == value)
    return;
  int last = capacity;
  capacity = value;
  if (last >= 0  && (capacity > last || capacity < 0)) {
    // serve another
    while (queue_count)
      if (!try_serve_from_queue(sim->verbose, sim->now()))
        break;
  } else if (last < 0 || capacity < last) {
    while (server_count > capacity)
      if (!try_free_server(sim->verbose, sim->now()))
        break;
  }
  if (is_monitored())
    sim->record_resource(name, server_count, queue_count, capacity, queue_size);
}