Minor cleanup. More efficient push() operation for RingBuffer

This commit is contained in:
Joseph Henry 2018-06-13 14:50:37 -07:00
parent 0faa655b83
commit f8005b88ad
3 changed files with 9 additions and 11 deletions

View file

@ -37,7 +37,7 @@
namespace ZeroTier {
/**
* A revolving (ring) buffer.
* A circular buffer
*
* For fast handling of continuously-evolving variables (such as path quality metrics).
* Using this, we can maintain longer sliding historical windows for important path
@ -169,7 +169,12 @@ public:
if (count() == size) {
consume(1);
}
write(&value, 1);
const size_t first_chunk = std::min((size_t)1, size - end);
*(buf + end) = value;
end = (end + first_chunk) % size;
if (begin == end) {
wrap = true;
}
}
/**