Ejemplo n.º 1
0
Archivo: test7.c Proyecto: hotfics/misc
int main() {
    ringbuf *r;
    size_t sz;
    int rc;
    char *d;

    r = ringbuf_new(11);
    printf("putting 7 bytes into buffer of sz 11\n");
    rc = ringbuf_put(r, z, 7);
    printf("put: %s\n", (rc == -1) ? "failed" : "ok");
    printf("consuming 7\n");
    ringbuf_mark_consumed(r, 7);
    printf("next put of > 4 bytes wraps buffer, writing 5\n");
    rc = ringbuf_put(r, z, 5);
    printf("put: %s\n", (rc == -1) ? "failed" : "ok");

    sz = ringbuf_get_next_chunk(r, &d);
    printf("chunk sz %lu: sz, %.*s\n", sz, (int)sz, d);
    printf("reading 3, of 5 available\n");
    ringbuf_mark_consumed(r, 3);

    printf("next read is last byte before wrapping\n");
    sz = ringbuf_get_next_chunk(r, &d);
    printf("chunk sz %lu: sz, %.*s\n", sz, (int)sz, d);
    ringbuf_mark_consumed(r, 1);

    printf("next read starts reading from wrapped part\n");
    sz = ringbuf_get_next_chunk(r, &d);
    printf("chunk sz %lu: sz, %.*s\n", sz, (int)sz, d);
    ringbuf_mark_consumed(r, 1);

    printf("nothing left\n");
    sz = ringbuf_get_pending_size(r);
    printf("size = %lu\n", sz);
    ringbuf_free(r);
    return 0;
}
Ejemplo n.º 2
0
Archivo: test10.c Proyecto: rikxqd/misc
int main() {
 ringbuf *r;
 size_t sz;
 int rc;
 char *d;
 char buf[32+11]; /* room for struct ring + 11 bytes of ring */

 r = ringbuf_take(buf,sizeof(buf));
 printf("gave buffer (ringbuf_take) expecting 11 free bytes\n");

 sz = ringbuf_get_freespace(r);
 printf("buffer has %lu free bytes\n", sz);

 printf("putting 7 bytes into buffer of sz 11\n");
 rc = ringbuf_put(r, z, 7);
 printf("put: %s\n", (rc == -1) ? "failed" : "ok");

 sz = ringbuf_get_freespace(r);
 printf("buffer has %lu free bytes\n", sz);

 printf("consuming 3\n");
 ringbuf_mark_consumed(r, 3);

 sz = ringbuf_get_freespace(r);
 printf("buffer has %lu free bytes\n", sz);

 sz = ringbuf_get_next_chunk(r, &d);
 printf("chunk sz %lu: sz, %.*s\n", sz, (int)sz, d);

 printf("marking clear\n");
 ringbuf_clear(r);

 sz = ringbuf_get_freespace(r);
 printf("buffer has %lu free bytes\n", sz);

 printf("nothing left\n");
 sz = ringbuf_get_pending_size(r);
 printf("pending size = %lu\n", sz);

 sz = ringbuf_get_freespace(r);
 printf("buffer has %lu free bytes\n", sz);

 /* do not ringbuf_free(r); since we used ringbuf_take */
 return 0;
}