Ejemplo n.º 1
0
/*
 * Close logger <logger>.
 */
void logClose(Logger *logger)
{
    LOG_Output *out;
    LOG_Prefix *pfx;

    if (logger == NULL) {
        return;
    }

    pthread_mutex_lock(&logger->access);

    bufReset(&logger->scratch);

    while ((out = listRemoveHead(&logger->outputs)) != NULL) {
        log_close_output(out);
    }

    while ((pfx = listRemoveHead(&logger->prefixes)) != NULL) {
        if (pfx->type == LOG_PT_STR && pfx->u.string != NULL) {
            free(pfx->u.string);
        }

        free(pfx);
    }

    pthread_mutex_unlock(&logger->access);

    pthread_mutex_destroy(&logger->access);

    free(logger);
}
Ejemplo n.º 2
0
void test_listRemoveHead_given_list_of_0x100_0x200_0x300_should_return_0x100()
{
  LinkedList list ;
  ListElement listElement1 ;
  ListElement listElement2;
  ListElement listElement3;
  ListElement *returnElement;
  
  initLinkedList(&list);
  
  listElementCreate(&listElement1,0x100);
  listElementCreate(&listElement2,0x200);
  listElementCreate(&listElement3,0x300);
  
  listAddTail(&list,&listElement1);
  listAddTail(&list,&listElement2);
  listAddTail(&list,&listElement3);

  
  returnElement = listRemoveHead(&list);

  TEST_ASSERT_EQUAL(&listElement1,returnElement);
  TEST_ASSERT_EQUAL(0x100,returnElement->data);
  TEST_ASSERT_EQUAL(NULL,returnElement->next);
  
  TEST_ASSERT_EQUAL(&listElement2,list.head);
  TEST_ASSERT_EQUAL(&listElement3,list.tail);
}
Ejemplo n.º 3
0
/*--------listRemoveHead---------*/
void_test_listRemoveHead_given_emptyList_should_return_NULL()
{
  LinkedList list ;
  ListElement *listElement ;
  initLinkedList(&list);
  
  listElement = listRemoveHead(&list);
  TEST_ASSERT_NULL(listElement);
}
Ejemplo n.º 4
0
/*
 * Process (and subsequently discard) the first pending timeout.
 */
void disHandleTimer(Dispatcher *dis)
{
    DIS_Timer *timer = listRemoveHead(&dis->timers);

    dbgAssert(stderr, timer != NULL, "no pending timer.\n");

    timer->cb(dis, timer->t, (void *) timer->udata);

    free(timer);
}
Ejemplo n.º 5
0
/*
 * Close dispatcher <dis>. This removes all file descriptors and timers, which will
 * cause disRun() to return.
 */
void disClose(Dispatcher *dis)
{
    int fd;
    DIS_Timer *timer;

    for (fd = 0; fd < paCount(&dis->files); fd++) {
        DIS_File *file = paGet(&dis->files, fd);

        if (file != NULL) {
            paDrop(&dis->files, fd);

            bufReset(&file->outgoing);

            free(file);
        }
    }

    while ((timer = listRemoveHead(&dis->timers)) != NULL) {
        free(timer);
    }
}
Ejemplo n.º 6
0
int main(int argc, char *argv[])
{
    List list;
    Data *data[6];

    int i, errors = 0;

    for (i = 0; i < 6; i++) {
        data[i] = calloc(1, sizeof(Data));
    }

    listInitialize(&list);

    TEST_INT(listLength(&list), 0);
    TEST_INT(listIsEmpty(&list),  TRUE);

    listAppendTail(&list, data[0]);
    listAppendTail(&list, data[1]);
    listAppendTail(&list, data[2]);
    listAppendTail(&list, data[3]);

    TEST_INT(listLength(&list), 4);
    TEST_INT(listIsEmpty(&list),  FALSE);

    TEST_PTR(listHead(&list), data[0]);
    TEST_PTR(listTail(&list), data[3]);

    TEST_PTR(listNext(data[0]), data[1]);
    TEST_PTR(listNext(data[1]), data[2]);
    TEST_PTR(listNext(data[2]), data[3]);
    TEST_PTR(listNext(data[3]), NULL);

    TEST_PTR(listPrev(data[3]), data[2]);
    TEST_PTR(listPrev(data[2]), data[1]);
    TEST_PTR(listPrev(data[1]), data[0]);
    TEST_PTR(listPrev(data[0]), NULL);

    TEST_PTR(listContaining(data[0]), &list);
    TEST_PTR(listContaining(data[1]), &list);
    TEST_PTR(listContaining(data[2]), &list);
    TEST_PTR(listContaining(data[3]), &list);

    listRemove(&list, data[0]);
    listRemove(&list, data[1]);
    listRemove(&list, data[2]);
    listRemove(&list, data[3]);

    TEST_INT(listLength(&list), 0);
    TEST_INT(listIsEmpty(&list),  TRUE);

    TEST_PTR(listContaining(data[0]), NULL);
    TEST_PTR(listContaining(data[1]), NULL);
    TEST_PTR(listContaining(data[2]), NULL);
    TEST_PTR(listContaining(data[3]), NULL);

    listInsertHead(&list, data[3]);
    listInsertHead(&list, data[2]);
    listInsertHead(&list, data[1]);
    listInsertHead(&list, data[0]);

    TEST_INT(listLength(&list), 4);
    TEST_INT(listIsEmpty(&list),  FALSE);

    TEST_PTR(listHead(&list), data[0]);
    TEST_PTR(listTail(&list), data[3]);

    TEST_PTR(listNext(data[0]), data[1]);
    TEST_PTR(listNext(data[1]), data[2]);
    TEST_PTR(listNext(data[2]), data[3]);
    TEST_PTR(listNext(data[3]), NULL);

    TEST_PTR(listPrev(data[3]), data[2]);
    TEST_PTR(listPrev(data[2]), data[1]);
    TEST_PTR(listPrev(data[1]), data[0]);
    TEST_PTR(listPrev(data[0]), NULL);

    TEST_PTR(listRemoveHead(&list), data[0]);
    TEST_PTR(listRemoveHead(&list), data[1]);
    TEST_PTR(listRemoveTail(&list), data[3]);
    TEST_PTR(listRemoveTail(&list), data[2]);

    TEST_INT(listLength(&list), 0);
    TEST_INT(listIsEmpty(&list),  TRUE);

    listAppendTail(&list, data[0]);
    listAppendTail(&list, data[3]);
    listAppend(&list, data[1], data[0]);
    listInsert(&list, data[2], data[3]);

    TEST_PTR(listRemoveHead(&list), data[0]);
    TEST_PTR(listRemoveHead(&list), data[1]);
    TEST_PTR(listRemoveTail(&list), data[3]);
    TEST_PTR(listRemoveTail(&list), data[2]);

    data[0]->i = 3;
    data[1]->i = 4;
    data[2]->i = 5;
    data[3]->i = 1;
    data[4]->i = 2;
    data[5]->i = 3;

    listAppendTail(&list, data[0]);
    listAppendTail(&list, data[1]);
    listAppendTail(&list, data[2]);
    listAppendTail(&list, data[3]);
    listAppendTail(&list, data[4]);
    listAppendTail(&list, data[5]);

    listSort(&list, cmp);

    TEST_PTR(listRemoveHead(&list), data[3]);
    TEST_PTR(listRemoveHead(&list), data[4]);
    TEST_PTR(listRemoveHead(&list), data[0]);
    TEST_PTR(listRemoveHead(&list), data[5]);
    TEST_PTR(listRemoveHead(&list), data[1]);
    TEST_PTR(listRemoveHead(&list), data[2]);

    exit(errors);
}