Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(501)

Unified Diff: net/tools/flip_server/ring_buffer.cc

Issue 2169503002: Remove flip_server. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « net/tools/flip_server/ring_buffer.h ('k') | net/tools/flip_server/run_all_tests.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: net/tools/flip_server/ring_buffer.cc
diff --git a/net/tools/flip_server/ring_buffer.cc b/net/tools/flip_server/ring_buffer.cc
deleted file mode 100644
index 16c278bcdefa8773188242a5e8f47cc76fb9a0e0..0000000000000000000000000000000000000000
--- a/net/tools/flip_server/ring_buffer.cc
+++ /dev/null
@@ -1,241 +0,0 @@
-// Copyright (c) 2009 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include "net/tools/flip_server/ring_buffer.h"
-#include "base/logging.h"
-
-namespace net {
-
-RingBuffer::RingBuffer(int buffer_size)
- : buffer_(new char[buffer_size]),
- buffer_size_(buffer_size),
- bytes_used_(0),
- read_idx_(0),
- write_idx_(0) {}
-
-RingBuffer::~RingBuffer() {}
-
-int RingBuffer::ReadableBytes() const { return bytes_used_; }
-
-int RingBuffer::BufferSize() const { return buffer_size_; }
-
-int RingBuffer::BytesFree() const { return BufferSize() - ReadableBytes(); }
-
-bool RingBuffer::Empty() const { return ReadableBytes() == 0; }
-
-bool RingBuffer::Full() const { return ReadableBytes() == BufferSize(); }
-
-// Returns the number of characters written.
-// Appends up-to-'size' bytes to the ringbuffer.
-int RingBuffer::Write(const char* bytes, int size) {
- CHECK_GE(size, 0);
-#if 1
- char* wptr;
- int wsize;
- GetWritablePtr(&wptr, &wsize);
- int bytes_remaining = size;
- int bytes_written = 0;
-
- while (wsize && bytes_remaining) {
- if (wsize > bytes_remaining) {
- wsize = bytes_remaining;
- }
- memcpy(wptr, bytes + bytes_written, wsize);
- bytes_written += wsize;
- bytes_remaining -= wsize;
- AdvanceWritablePtr(wsize);
- GetWritablePtr(&wptr, &wsize);
- }
- return bytes_written;
-#else
- const char* p = bytes;
-
- int bytes_to_write = size;
- int bytes_available = BytesFree();
- if (bytes_available < bytes_to_write) {
- bytes_to_write = bytes_available;
- }
- const char* end = bytes + bytes_to_write;
-
- while (p != end) {
- this->buffer_[this->write_idx_] = *p;
- ++p;
- ++this->write_idx_;
- if (this->write_idx_ >= this->buffer_size_) {
- this->write_idx_ = 0;
- }
- }
- bytes_used_ += bytes_to_write;
- return bytes_to_write;
-#endif
-}
-
-// Sets *ptr to the beginning of writable memory, and sets *size to the size
-// available for writing using this pointer.
-void RingBuffer::GetWritablePtr(char** ptr, int* size) const {
- *ptr = buffer_.get() + write_idx_;
-
- if (bytes_used_ == buffer_size_) {
- *size = 0;
- } else if (read_idx_ > write_idx_) {
- *size = read_idx_ - write_idx_;
- } else {
- *size = buffer_size_ - write_idx_;
- }
-}
-
-// Sets *ptr to the beginning of readable memory, and sets *size to the size
-// available for reading using this pointer.
-void RingBuffer::GetReadablePtr(char** ptr, int* size) const {
- *ptr = buffer_.get() + read_idx_;
-
- if (bytes_used_ == 0) {
- *size = 0;
- } else if (write_idx_ > read_idx_) {
- *size = write_idx_ - read_idx_;
- } else {
- *size = buffer_size_ - read_idx_;
- }
-}
-
-// returns the number of bytes read into
-int RingBuffer::Read(char* bytes, int size) {
- CHECK_GE(size, 0);
-#if 1
- char* rptr;
- int rsize;
- GetReadablePtr(&rptr, &rsize);
- int bytes_remaining = size;
- int bytes_read = 0;
-
- while (rsize && bytes_remaining) {
- if (rsize > bytes_remaining) {
- rsize = bytes_remaining;
- }
- memcpy(bytes + bytes_read, rptr, rsize);
- bytes_read += rsize;
- bytes_remaining -= rsize;
- AdvanceReadablePtr(rsize);
- GetReadablePtr(&rptr, &rsize);
- }
- return bytes_read;
-#else
- char* p = bytes;
- int bytes_to_read = size;
- int bytes_used = ReadableBytes();
- if (bytes_used < bytes_to_read) {
- bytes_to_read = bytes_used;
- }
- char* end = bytes + bytes_to_read;
-
- while (p != end) {
- *p = this->buffer_[this->read_idx_];
- ++p;
- ++this->read_idx_;
- if (this->read_idx_ >= this->buffer_size_) {
- this->read_idx_ = 0;
- }
- }
- this->bytes_used_ -= bytes_to_read;
- return bytes_to_read;
-#endif
-}
-
-void RingBuffer::Clear() {
- bytes_used_ = 0;
- write_idx_ = 0;
- read_idx_ = 0;
-}
-
-bool RingBuffer::Reserve(int size) {
- DCHECK_GT(size, 0);
- char* write_ptr = NULL;
- int write_size = 0;
- GetWritablePtr(&write_ptr, &write_size);
-
- if (write_size < size) {
- char* read_ptr = NULL;
- int read_size = 0;
- GetReadablePtr(&read_ptr, &read_size);
- if (size <= BytesFree()) {
- // The fact that the total Free size is big enough but writable size is
- // not means that the writeable region is broken into two pieces: only
- // possible if the read_idx < write_idx. If write_idx < read_idx, then
- // the writeable region must be contiguous: [write_idx, read_idx). There
- // is no work to be done for the latter.
- DCHECK_LE(read_idx_, write_idx_);
- DCHECK_EQ(read_size, ReadableBytes());
- if (read_idx_ < write_idx_) {
- // Writeable area fragmented, consolidate it.
- memmove(buffer_.get(), read_ptr, read_size);
- read_idx_ = 0;
- write_idx_ = read_size;
- } else if (read_idx_ == write_idx_) {
- // No unconsumed data in the buffer, simply reset the indexes.
- DCHECK_EQ(ReadableBytes(), 0);
- read_idx_ = 0;
- write_idx_ = 0;
- }
- } else {
- Resize(ReadableBytes() + size);
- }
- }
- DCHECK_LE(size, buffer_size_ - write_idx_);
- return true;
-}
-
-void RingBuffer::AdvanceReadablePtr(int amount_to_consume) {
- CHECK_GE(amount_to_consume, 0);
- if (amount_to_consume >= bytes_used_) {
- Clear();
- return;
- }
- read_idx_ += amount_to_consume;
- read_idx_ %= buffer_size_;
- bytes_used_ -= amount_to_consume;
-}
-
-void RingBuffer::AdvanceWritablePtr(int amount_to_produce) {
- CHECK_GE(amount_to_produce, 0);
- CHECK_LE(amount_to_produce, BytesFree());
- write_idx_ += amount_to_produce;
- write_idx_ %= buffer_size_;
- bytes_used_ += amount_to_produce;
-}
-
-void RingBuffer::Resize(int buffer_size) {
- CHECK_GE(buffer_size, 0);
- if (buffer_size == buffer_size_)
- return;
-
- char* new_buffer = new char[buffer_size];
- if (buffer_size < bytes_used_) {
- // consume the oldest data.
- AdvanceReadablePtr(bytes_used_ - buffer_size);
- }
-
- int bytes_written = 0;
- int bytes_used = bytes_used_;
- while (true) {
- int size;
- char* ptr;
- GetReadablePtr(&ptr, &size);
- if (size == 0)
- break;
- if (size > buffer_size) {
- size = buffer_size;
- }
- memcpy(new_buffer + bytes_written, ptr, size);
- bytes_written += size;
- AdvanceReadablePtr(size);
- }
- buffer_.reset(new_buffer);
-
- buffer_size_ = buffer_size;
- bytes_used_ = bytes_used;
- read_idx_ = 0;
- write_idx_ = bytes_used_ % buffer_size_;
-}
-
-} // namespace net
« no previous file with comments | « net/tools/flip_server/ring_buffer.h ('k') | net/tools/flip_server/run_all_tests.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698