summaryrefslogtreecommitdiff
path: root/toxav/ring_buffer.c
diff options
context:
space:
mode:
authoriphydf <iphydf@users.noreply.github.com>2018-01-21 17:42:19 +0000
committeriphydf <iphydf@users.noreply.github.com>2018-01-21 17:42:19 +0000
commit6c98791563b41deebbd34bd35db2839d78f12c2c (patch)
tree9b57e794366b1ff19e16410f46ab0e809ccf3803 /toxav/ring_buffer.c
parent1cecb6c87a4d1c9773d6861868124a9d0f01f7b2 (diff)
Add comment from #629 in ring_buffer.c.
Diffstat (limited to 'toxav/ring_buffer.c')
-rw-r--r--toxav/ring_buffer.c11
1 files changed, 11 insertions, 0 deletions
diff --git a/toxav/ring_buffer.c b/toxav/ring_buffer.c
index 99be0e8a..c60c21f2 100644
--- a/toxav/ring_buffer.c
+++ b/toxav/ring_buffer.c
@@ -34,10 +34,16 @@ bool rb_full(const RingBuffer *b)
34{ 34{
35 return (b->end + 1) % b->size == b->start; 35 return (b->end + 1) % b->size == b->start;
36} 36}
37
37bool rb_empty(const RingBuffer *b) 38bool rb_empty(const RingBuffer *b)
38{ 39{
39 return b->end == b->start; 40 return b->end == b->start;
40} 41}
42
43/*
44 * returns: NULL on success
45 * input value "p" on FAILURE -> caller can free on failed rb_write
46 */
41void *rb_write(RingBuffer *b, void *p) 47void *rb_write(RingBuffer *b, void *p)
42{ 48{
43 void *rc = NULL; 49 void *rc = NULL;
@@ -55,6 +61,7 @@ void *rb_write(RingBuffer *b, void *p)
55 61
56 return rc; 62 return rc;
57} 63}
64
58bool rb_read(RingBuffer *b, void **p) 65bool rb_read(RingBuffer *b, void **p)
59{ 66{
60 if (b->end == b->start) { /* Empty */ 67 if (b->end == b->start) { /* Empty */
@@ -66,6 +73,7 @@ bool rb_read(RingBuffer *b, void **p)
66 b->start = (b->start + 1) % b->size; 73 b->start = (b->start + 1) % b->size;
67 return true; 74 return true;
68} 75}
76
69RingBuffer *rb_new(int size) 77RingBuffer *rb_new(int size)
70{ 78{
71 RingBuffer *buf = (RingBuffer *)calloc(sizeof(RingBuffer), 1); 79 RingBuffer *buf = (RingBuffer *)calloc(sizeof(RingBuffer), 1);
@@ -83,6 +91,7 @@ RingBuffer *rb_new(int size)
83 91
84 return buf; 92 return buf;
85} 93}
94
86void rb_kill(RingBuffer *b) 95void rb_kill(RingBuffer *b)
87{ 96{
88 if (b) { 97 if (b) {
@@ -90,6 +99,7 @@ void rb_kill(RingBuffer *b)
90 free(b); 99 free(b);
91 } 100 }
92} 101}
102
93uint16_t rb_size(const RingBuffer *b) 103uint16_t rb_size(const RingBuffer *b)
94{ 104{
95 if (rb_empty(b)) { 105 if (rb_empty(b)) {
@@ -101,6 +111,7 @@ uint16_t rb_size(const RingBuffer *b)
101 b->end - b->start : 111 b->end - b->start :
102 (b->size - b->start) + b->end; 112 (b->size - b->start) + b->end;
103} 113}
114
104uint16_t rb_data(const RingBuffer *b, void **dest) 115uint16_t rb_data(const RingBuffer *b, void **dest)
105{ 116{
106 uint16_t i = 0; 117 uint16_t i = 0;