Пример #1
0
void
case_buf_isempty()
{
    struct buf *buf1 = buf("test");
    struct buf *buf2 = buf(NULL);
    assert(!buf_isempty(buf1));
    assert(buf_isempty(buf2));
    buf_free(buf1);
    buf_free(buf2);
}
Пример #2
0
int Dequeue(RingBuffer* buf, uint8_t *data)
{
    if(buf_isempty(buf)) {
        printf("buf is empty\n");
    }
    else {
        *data = buf_get_byte(buf);
        printf("Dequeue: %d\n\n", *data);
    }
    return 1;
}
Пример #3
0
/*-------------------------------------------------------------------------*\
* Return any data available in buffer, or get more data from transport layer
* if buffer is empty
\*-------------------------------------------------------------------------*/
static int buf_get(p_buf buf, const char **data, size_t *count) {
    int err = IO_DONE;
    p_io io = buf->io;
    p_tm tm = buf->tm;
    if (buf_isempty(buf)) {
        size_t got;
        err = io->recv(io->ctx, buf->data, BUF_SIZE, &got, tm);
        buf->first = 0;
        buf->last = got;
    }
    *count = buf->last - buf->first;
    *data = buf->data + buf->first;
    return err;
}
Пример #4
0
/*-------------------------------------------------------------------------*\
* Skips a given number of bytes from read buffer. No data is read from the
* transport layer
\*-------------------------------------------------------------------------*/
static void buf_skip(p_buf buf, size_t count) {
    buf->received += count;
    buf->first += count;
    if (buf_isempty(buf)) 
        buf->first = buf->last = 0;
}