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

Unified Diff: chrome/renderer/net/predictor_queue.h

Issue 644123002: Componentize renderer side of DNS prefetching. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: rebase Created 6 years, 2 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
Index: chrome/renderer/net/predictor_queue.h
diff --git a/chrome/renderer/net/predictor_queue.h b/chrome/renderer/net/predictor_queue.h
deleted file mode 100644
index dd850b7efb99e594c22540697decdfb9e48d1ed1..0000000000000000000000000000000000000000
--- a/chrome/renderer/net/predictor_queue.h
+++ /dev/null
@@ -1,87 +0,0 @@
-// Copyright (c) 2011 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.
-
-// DnsQueue is implemented as an almost FIFO circular buffer for text
-// strings that don't have embedded nulls ('\0'). The "almost" element is that
-// some duplicate strings may be removed (i.e., the string won't really be
-// pushed *if* the class happens to notice that a duplicate is already in the
-// queue).
-// The buffers internal format is null terminated character strings
-// (a.k.a., c_strings).
-// It is written to be as fast as possible during push() operations, so
-// that there will be minimal performance impact on a supplier thread.
-// The push() operation will not block, and no memory allocation is involved
-// (internally) during the push operations.
-// The one caveat is that if there is insufficient space in the buffer to
-// accept additional string via a push(), then the push() will fail, and
-// the buffer will be unmodified.
-
-// This class was designed for use in DNS prefetch operations. During
-// rendering, the supplier is the renderer (typically), and the consumer
-// is a thread that sends messages to an async DNS resolver.
-
-#ifndef CHROME_RENDERER_NET_PREDICTOR_QUEUE_H__
-#define CHROME_RENDERER_NET_PREDICTOR_QUEUE_H__
-
-#include <string>
-
-#include "base/basictypes.h"
-#include "base/memory/scoped_ptr.h"
-
-class DnsQueue {
- public:
- // BufferSize is a signed type used for indexing into a buffer.
- typedef int32 BufferSize;
-
- enum PushResult { SUCCESSFUL_PUSH, OVERFLOW_PUSH, REDUNDANT_PUSH };
-
- // The size specified in the constructor creates a buffer large enough
- // to hold at most one string of that length, or "many"
- // strings of considerably shorter length. Note that strings
- // are padded internally with a terminal '\0" while stored,
- // so if you are trying to be precise and get N strings of
- // length K to fit, you should actually construct a buffer with
- // an internal size of N*(K+1).
- explicit DnsQueue(BufferSize size);
- ~DnsQueue(void);
-
- size_t Size() const { return size_; }
- void Clear();
-
- // Push takes an unterminated string of the given length
- // and inserts it into the queue for later
- // extraction by read. For each successful push(), there
- // can later be a corresponding read() to extracted the text.
- // The string must not contain an embedded null terminator
- // Exactly length chars are written, or the push fails (where
- // "fails" means nothing is written).
- // Returns true for success, false for failure (nothing written).
- PushResult Push(const char* source, const size_t length);
-
- PushResult Push(std::string source) {
- return Push(source.c_str(), source.length());
- }
-
- // Extract the next available string from the buffer.
- // If the buffer is empty, then return false.
- bool Pop(std::string* out_string);
-
- private:
- bool Validate(); // Checks that all internal data is valid.
-
- const scoped_ptr<char[]> buffer_; // Circular buffer, plus extra char ('\0').
- const BufferSize buffer_size_; // Size one smaller than allocated space.
- const BufferSize buffer_sentinel_; // Index of extra '\0' at end of buffer_.
-
- // If writable_ == readable_, then the buffer is empty.
- BufferSize readable_; // Next readable char in buffer_.
- BufferSize writeable_; // The next space in buffer_ to push.
-
- // Number of queued strings
- size_t size_;
-
- DISALLOW_COPY_AND_ASSIGN(DnsQueue);
-}; // class DnsQueue
-
-#endif // CHROME_RENDERER_NET_PREDICTOR_QUEUE_H__

Powered by Google App Engine
This is Rietveld 408576698