Ejemplo n.º 1
0
bool test_r_queue_zero_size(void) {
	// Create queue with max size 0.
	RQueue* queue = r_queue_new (0);
	mu_assert_eq ((int)(intptr_t)queue, (int)(intptr_t)NULL,
			"Create queue of size zero.");
	mu_end;
}
Ejemplo n.º 2
0
static RTaskQueue *
r_task_queue_alloc (rsize ctxcount)
{
  RTaskQueue * ret;

  if ((ret = r_mem_new0 (RTaskQueue)) != NULL) {
    ruint i;
    r_ref_init (ret, r_task_queue_free);

    r_mutex_init (&ret->wait_mutex);
    r_cond_init (&ret->wait_cond);

    ret->ctxcount = ctxcount;
    ret->ctx = r_mem_new_n (RTQCtx, ctxcount);

    for (i = 0; i < ctxcount; i++) {
      ret->ctx[i].q = r_queue_new ();
      ret->ctx[i].running = TRUE;
      ret->ctx[i].threads = 0;
      r_mutex_init (&ret->ctx[i].mutex);
      r_cond_init (&ret->ctx[i].cond);
    }

    ret->pool = r_thread_pool_new ("taskqueue", r_task_queue_loop, ret);
  }

  return ret;
}
Ejemplo n.º 3
0
R_API bool r_id_pool_kick_id(RIDPool* pool, ut32 kick) {
	if (!pool || (kick < pool->start_id) || (pool->start_id == pool->next_id)) {
		return false;
	}
	if (kick == (pool->next_id - 1)) {
		pool->next_id--;
		return true;
	}
	if (!pool->freed_ids) {
		pool->freed_ids = r_queue_new (2);
	}
	r_queue_enqueue (pool->freed_ids, (void*) (size_t) kick);
	return true;
}
Ejemplo n.º 4
0
bool test_r_queue_add_remove(void) {
	int i, j;
	// Create queue with max size 5.
	RQueue* queue = r_queue_new (5);
	for (i = 0; i < 5; ++i) {
		mu_assert ("enqueue to available slot",
				r_queue_enqueue (queue, (void*)(intptr_t)((i + 1) * 10)));
	}
	mu_assert_eq (queue->capacity, 5, "original capacity is 5");
	mu_assert ("enqueue but it's full! Increase Capacity!",
				r_queue_enqueue (queue, (void*)(intptr_t)60));
	mu_assert_eq (queue->capacity, 10, "new capacity should be double old");
	for (i = 0; i < 6; ++i) {
		j = (int)(intptr_t)r_queue_dequeue (queue);
		mu_assert_eq (j, (i + 1) * 10, "front item from queue");
	}
	j = (int)(intptr_t)r_queue_dequeue (queue);
	mu_assert_eq (j, (int)(intptr_t)NULL, "Empty queue dequeue.");
	r_queue_free (queue);
	mu_end;
}