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

Unified Diff: content/browser/renderer_host/resource_buffer.h

Issue 11414299: Add content/browser/loader/ for resource loading related classes. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: Created 8 years 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: content/browser/renderer_host/resource_buffer.h
===================================================================
--- content/browser/renderer_host/resource_buffer.h (revision 171168)
+++ content/browser/renderer_host/resource_buffer.h (working copy)
@@ -1,128 +0,0 @@
-// Copyright (c) 2012 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.
-
-#ifndef CONTENT_BROWSER_RENDERER_HOST_RESOURCE_BUFFER_H_
-#define CONTENT_BROWSER_RENDERER_HOST_RESOURCE_BUFFER_H_
-
-#include <queue>
-
-#include "base/basictypes.h"
-#include "base/memory/ref_counted.h"
-#include "base/shared_memory.h"
-#include "content/common/content_export.h"
-
-namespace content {
-
-// ResourceBuffer implements a simple "circular buffer" allocation strategy.
-// Allocations are recycled in FIFO order.
-//
-// You can think of the ResourceBuffer as a FIFO. The Allocate method reserves
-// space in the buffer. Allocate may be called multiple times until the buffer
-// is fully reserved (at which point CanAllocate returns false). Allocations
-// are freed in FIFO order via a call to RecycleLeastRecentlyAllocated.
-//
-// ResourceBuffer is reference-counted for the benefit of consumers, who need
-// to ensure that ResourceBuffer stays alive while they are using its memory.
-//
-// EXAMPLE USAGE:
-//
-// // Writes data into the ResourceBuffer, and returns the location (byte
-// // offset and count) of the bytes written into the ResourceBuffer's shared
-// // memory buffer.
-// void WriteToBuffer(ResourceBuffer* buf, int* offset, int* count) {
-// DCHECK(buf->CanAllocate());
-//
-// *offset = -1;
-// *count = 0;
-//
-// int size;
-// char* ptr = buf->Allocate(&size);
-// if (!ptr) { /* handle error */ }
-//
-// int bytes_read = static_cast<int>(fread(ptr, 1, size, file_pointer_));
-// if (!bytes_read) { /* handle error */ }
-//
-// if (bytes_read < size)
-// buf->ShrinkLastAllocation(bytes_read);
-//
-// *offset = buf->GetLastAllocationOffset();
-// *count = bytes_read;
-// }
-//
-// NOTE: As the above example illustrates, the ResourceBuffer keeps track of
-// the last allocation made. Calling ShrinkLastAllocation is optional, as it
-// just helps the ResourceBuffer optimize storage and be more aggressive about
-// returning larger allocations from the Allocate method.
-//
-class CONTENT_EXPORT ResourceBuffer
- : public base::RefCountedThreadSafe<ResourceBuffer> {
- public:
- ResourceBuffer();
-
- // Initialize the shared memory buffer. It will be buffer_size bytes in
- // length. The min/max_allocation_size parameters control the behavior of
- // the Allocate method. It will prefer to return segments that are
- // max_allocation_size in length, but will return segments less than that if
- // space is limited. It will not return allocations smaller than
- // min_allocation_size.
- bool Initialize(int buffer_size,
- int min_allocation_size,
- int max_allocation_size);
- bool IsInitialized() const;
-
- // Returns a shared memory handle that can be passed to the given process.
- // The shared memory handle is only intended to be interpretted by code
- // running in the specified process. NOTE: The caller should ensure that
- // this memory eventually be returned to the operating system.
- bool ShareToProcess(base::ProcessHandle process_handle,
- base::SharedMemoryHandle* shared_memory_handle,
- int* shared_memory_size);
-
- // Returns true if Allocate will succeed.
- bool CanAllocate() const;
-
- // Returns a pointer into the shared memory buffer or NULL if the buffer is
- // already fully allocated. The returned size will be max_allocation_size
- // unless the buffer is close to being full.
- char* Allocate(int* size);
-
- // Returns the offset into the shared memory buffer where the last allocation
- // returned by Allocate can be found.
- int GetLastAllocationOffset() const;
-
- // Called to reduce the size of the last allocation returned by Allocate. It
- // is OK for new_size to match the current size of the last allocation.
- void ShrinkLastAllocation(int new_size);
-
- // Called to allow reuse of memory that was previously allocated. See notes
- // above the class for more details about this method.
- void RecycleLeastRecentlyAllocated();
-
- private:
- friend class base::RefCountedThreadSafe<ResourceBuffer>;
- ~ResourceBuffer();
-
- base::SharedMemory shared_mem_;
-
- int buf_size_;
- int min_alloc_size_;
- int max_alloc_size_;
-
- // These point to the range of the shared memory that is currently allocated.
- // If alloc_start_ is -1, then the range is empty and nothing is allocated.
- // Otherwise, alloc_start_ points to the start of the allocated range, and
- // alloc_end_ points just beyond the end of the previous allocation. In the
- // wraparound case, alloc_end_ <= alloc_start_. See resource_buffer.cc for
- // more details about these members.
- int alloc_start_;
- int alloc_end_;
-
- std::queue<int> alloc_sizes_;
-
- DISALLOW_COPY_AND_ASSIGN(ResourceBuffer);
-};
-
-} // namespace content
-
-#endif // CONTENT_BROWSER_RENDERER_HOST_RESOURCE_BUFFER_H_
« no previous file with comments | « content/browser/renderer_host/render_widget_helper.cc ('k') | content/browser/renderer_host/resource_buffer.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698