예제 #1
0
파일: list.c 프로젝트: igalic/ironbee
ib_status_t ib_list_shift(ib_list_t *list, void *pdata)
{
    IB_FTRACE_INIT(ib_list_shift);
    if (list->nelts == 0) {
        if (pdata != NULL) {
            *(void **)pdata = NULL;
        }
        IB_FTRACE_RET_STATUS(IB_ENOENT);
    }

    if (pdata != NULL) {
        *(void **)pdata = IB_LIST_NODE_DATA(list->head);
    }
    IB_LIST_NODE_REMOVE_FIRST(list);

    IB_FTRACE_RET_STATUS(IB_OK);
}
예제 #2
0
ib_status_t ib_stream_pull(ib_stream_t *s,
                           ib_sdata_t **psdata)
{
    IB_FTRACE_INIT();

    if (s->nelts == 0) {
        if (psdata != NULL) {
            *psdata = NULL;
        }
        IB_FTRACE_RET_STATUS(IB_ENOENT);
    }

    s->slen -= s->head->dlen;
    if (psdata != NULL) {
        *psdata = s->head;
    }

    IB_LIST_NODE_REMOVE_FIRST(s);

    IB_FTRACE_RET_STATUS(IB_OK);
}