RingBuffer: use explict "if" and return early

Remove confusing use of ternary operator together with assign + load.
No change in behavior.
This commit is contained in:
Lucas De Marchi 2016-10-05 12:54:28 -03:00
parent e8b9c815fc
commit 05a7eef1a2

View File

@ -36,8 +36,14 @@ bool ByteBuffer::set_size(uint32_t _size)
uint32_t ByteBuffer::available(void) const
{
uint32_t _tail;
return ((head > (_tail=tail))? (size - head) + _tail: _tail - head);
/* use a copy on stack to avoid race conditions of @tail being updated by
* the writer thread */
uint32_t _tail = tail;
if (head > _tail) {
return size - head + _tail;
}
return _tail - head;
}
void ByteBuffer::clear(void)
@ -47,8 +53,22 @@ void ByteBuffer::clear(void)
uint32_t ByteBuffer::space(void) const
{
if (size == 0) {
return 0;
}
/* use a copy on stack to avoid race conditions of @head being updated by
* the reader thread */
uint32_t _head = head;
return size ? (_head > tail ? 0 : size) + _head - tail - 1 : 0;
uint32_t ret = 0;
if (_head <= tail) {
ret = size;
}
ret += _head - tail - 1;
return ret;
}
bool ByteBuffer::empty(void) const