Example #1
0
END_TEST


/*-----------------------------------------------------------------------
 * Strings
 */

static void
test_strndup(const char *string, size_t size)
{
    const char  *copy;

    copy = cork_strndup(string, size);
    if (memcmp(string, copy, size) != 0) {
        fail("cork_strndup failed");
    }
    cork_strfree(copy);

    copy = cork_xstrndup(string, size);
    fail_if(copy == NULL, "cork_xstrndup couldn't allocate copy");
    if (memcmp(string, copy, size) != 0) {
        fail("cork_xstrndup failed");
    }
    cork_strfree(copy);
}
Example #2
0
File: git.c Project: redjack/buzzy
static void
bz_git__free(void *user_data)
{
    struct bz_git_repo  *repo = user_data;
    cork_buffer_done(&repo->slug);
    cork_strfree(repo->url);
    cork_strfree(repo->commit);
    free(repo);
}
Example #3
0
void
vrt_queue_free(struct vrt_queue *q)
{
    unsigned int  i;
    unsigned int  value_count = q->value_mask + 1;

    if (q->name != NULL) {
        cork_strfree(q->name);
    }

    cork_array_done(&q->producers);
    cork_array_done(&q->consumers);

    if (q->values != NULL) {
        for (i = 0; i < value_count; i++) {
            if (q->values[i] != NULL) {
                vrt_value_free(q->value_type, q->values[i]);
            }
        }

        cork_cfree(q->values, value_count, sizeof(struct vrt_value *));
    }

    cork_delete(struct vrt_queue, q);
}
Example #4
0
struct vrt_consumer *
vrt_consumer_new(const char *name, struct vrt_queue *q)
{
    struct vrt_consumer  *c = cork_new(struct vrt_consumer);
    memset(c, 0, sizeof(struct vrt_consumer));
    c->name = cork_strdup(name);
    cork_array_init(&c->dependencies);

    ei_check(vrt_queue_add_consumer(q, c));
    c->cursor.value = starting_value;
    c->last_available_id = starting_value;
    c->current_id = starting_value;
    c->eof_count = 0;
    c->batch_count = 0;
    c->yield_count = 0;
    return c;

error:
    if (c->name != NULL) {
        cork_strfree(c->name);
    }

    cork_array_done(&c->dependencies);
    cork_delete(struct vrt_consumer, c);
    return NULL;
}
Example #5
0
void
vrt_producer_free(struct vrt_producer *p)
{
    if (p->name != NULL) {
        cork_strfree(p->name);
    }

    if (p->yield != NULL) {
        vrt_yield_strategy_free(p->yield);
    }

    cork_delete(struct vrt_producer, p);
}
Example #6
0
void
vrt_consumer_free(struct vrt_consumer *c)
{
    if (c->name != NULL) {
        cork_strfree(c->name);
    }

    if (c->yield != NULL) {
        vrt_yield_strategy_free(c->yield);
    }

    cork_array_done(&c->dependencies);
    cork_delete(struct vrt_consumer, c);
}
Example #7
0
struct vrt_producer *
vrt_producer_new(const char *name, unsigned int batch_size,
                 struct vrt_queue *q)
{
    struct vrt_producer  *p;
    unsigned int  maximum_batch_size;

    p = cork_new(struct vrt_producer);
    memset(p, 0, sizeof(struct vrt_producer));

    p->name = cork_strdup(name);
    ei_check(vrt_queue_add_producer(q, p));

    if (batch_size == 0) {
        batch_size = DEFAULT_BATCH_SIZE;
    }
    maximum_batch_size = vrt_queue_size(q) / 4;
    if (batch_size > maximum_batch_size) {
        batch_size = maximum_batch_size;
    }
    clog_trace("<%s> Batch size is %u", name, batch_size);

    p->last_produced_id = starting_value;
    p->last_claimed_id = starting_value;
    p->batch_size = batch_size;
    p->yield = NULL;
    p->batch_count = 0;
    p->yield_count = 0;
    return p;

error:
    if (p->name != NULL) {
        cork_strfree(p->name);
    }

    cork_delete(struct vrt_producer, p);
    return NULL;
}