コード例 #1
0
ファイル: test.c プロジェクト: zoujiaqing/gbase
int main()
{
    int data[LOOP];
    int i, res;
    int* p;
    struct slist_t* sl;
    sl = slist_init();
    assert(sl);

    for (i = 0; i < LOOP; ++ i) {
        data[i] = rand() % LOOP;
        res = slist_push_front(sl, &data[i]);
        assert(0 == res);
        res = slist_push_back(sl, &data[i]);
        assert(0 == res);
    }
    printf("list count=%d\n", slist_count(sl));

    for (i = LOOP-1; i >= 0; -- i) {
        res = slist_find(sl, &data[i]);
        assert(0 == res);
        p = slist_pop_front(sl);
        assert(p == &data[i]);
        p = slist_pop_back(sl);
        assert(p == &data[i]);
        res = slist_find(sl, &data[i]);
        assert(res < 0);
    }
    printf("list count=%d\n", slist_count(sl));

    slist_release(sl);
    sl = 0;
    return 0;
}
コード例 #2
0
ファイル: reactor_epoll.c プロジェクト: tsingzhen/gbase
void epoll_release(struct reactor_t* reactor)
{
    if (reactor && reactor->data) {
        epoll_t* epoll = (epoll_t*)(reactor->data);
        slist_release(epoll->expired);
        close(epoll->epoll_fd);
        epoll->epoll_fd = -1;
        FREE(epoll);
        reactor->data = 0;
        reactor->name = NULL;
    }
}
コード例 #3
0
ファイル: curlp.c プロジェクト: gaccob/gbase
void
curlp_release(curlp_t* cp) {
    if (cp) {
        if (cp->free_list) {
            slist_release(cp->free_list);
        }
        if (cp->clients) {
            hash_loop(cp->clients, _curl_loop_release, cp);
            hash_release(cp->clients);
        }
        if (cp->mhandle) {
            curl_multi_cleanup(cp->mhandle);
            cp->mhandle = NULL;
        }
        FREE(cp);
    }
}
コード例 #4
0
ファイル: test_base_slist.c プロジェクト: gaccob/gbase
int
test_base_slist(const char* param) {
    struct slist_t* sl = slist_create();
    if (!sl) {
        fprintf(stderr, "slist create fail\n");
        return -1;
    }

    rand_seed(time(NULL));
    int loop = param ? atoi(param) : 32;
    int data[loop];
    for (int i = 0; i < loop; ++ i) {
        data[i] = (int)(rand_gen()) % loop;
        int res = slist_push_front(sl, &data[i]);
        CHECK(sl, res == 0, "slist push front fail");

        res = slist_push_back(sl, &data[i]);
        CHECK(sl, res == 0, "slist push back fail");
    }

    CHECK(sl, slist_size(sl) == 2 * loop, "slist size fail");

    for (int i = loop - 1; i >= 0; -- i) {
        int res = slist_find(sl, &data[i]);
        CHECK(sl, res == 0, "slist find fail");

        void* p = slist_pop_front(sl);
        CHECK(sl, p == &data[i], "slist pop front fail");

        p = slist_pop_back(sl);
        CHECK(sl, p == &data[i], "slist pop back fail");

        res = slist_find(sl, &data[i]);
        CHECK(sl, res < 0, "slist find fail");
    }

    CHECK(sl, slist_size(sl) == 0, "slist size fail");

    slist_release(sl);
    return 0;
}
コード例 #5
0
ファイル: curl_pool.c プロジェクト: zoujiaqing/gbase
curl_pool_t* curl_pool_init()
{
    int32_t i = 0;
    struct curl_client_t* cc = NULL;
    curl_pool_t* cp = (curl_pool_t*)MALLOC(sizeof(*cp));
    if (!cp) goto CURL_FAIL;
    memset(cp, 0, sizeof(*cp));

    cp->size = CURL_POOL_DEFAULT_SIZE;
    cp->free_list = slist_init();
    if (!cp->free_list) goto CURL_FAIL1;

    cp->clients = hash_init(_curl_pool_hash, _curl_pool_cmp, cp->size * 13);
    if (!cp->clients) goto CURL_FAIL2;

    cp->mhandle = curl_multi_init();
    if (!cp->mhandle) goto CURL_FAIL3;

    // pre allocate client
    for (i = 0; i < cp->size; ++ i)
    {
        cc = curl_client_init();
        if (cc) {
            slist_push_front(cp->free_list, cc);
            hash_insert(cp->clients, cc);
        }
    }
    return cp;

CURL_FAIL3:
    hash_release(cp->clients);
CURL_FAIL2:
    slist_release(cp->free_list);
CURL_FAIL1:
    FREE(cp);
CURL_FAIL:
    return NULL;
}
コード例 #6
0
ファイル: slist.c プロジェクト: Angeldude/pd
static void slist_setlist(t_slist *x,t_symbol *s)
{
    slist_release(x->x_c);
    x->x_c = slist_get(s);
}
コード例 #7
0
ファイル: slist.c プロジェクト: Angeldude/pd
static void slist_ff(t_slist *x)
{
    slist_release(x->x_c);
}