33void ByteQueue::Push(
const uint8_t* data,
int size) {
36 size_t size_needed = used_ + size;
39 if (size_needed > size_) {
40 size_t new_size = 2 * size_;
41 while (size_needed > new_size && new_size > size_)
45 CHECK_GT(new_size, size_);
47 std::unique_ptr<uint8_t[]> new_buffer(
new uint8_t[new_size]);
51 memcpy(new_buffer.get(), front(), used_);
53 buffer_.reset(new_buffer.release());
56 }
else if ((offset_ + used_ + size) > size_) {
58 memmove(buffer_.get(), front(), used_);
62 memcpy(front() + used_, data, size);