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

Unified Diff: storage/browser/blob/blob_async_transport_request_builder.h

Issue 2448353002: [BlobAsync] Moving async handling into BlobStorageContext & quota out. (Closed)
Patch Set: comments from Marijn Created 4 years, 1 month 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: storage/browser/blob/blob_async_transport_request_builder.h
diff --git a/storage/browser/blob/blob_async_transport_request_builder.h b/storage/browser/blob/blob_async_transport_request_builder.h
deleted file mode 100644
index 10dde5ff6ffad01b1314cd105c285bc88a956874..0000000000000000000000000000000000000000
--- a/storage/browser/blob/blob_async_transport_request_builder.h
+++ /dev/null
@@ -1,138 +0,0 @@
-// Copyright 2015 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 STORAGE_BROWSER_BLOB_BLOB_ASYNC_TRANSPORT_REQUEST_BUILDER_H_
-#define STORAGE_BROWSER_BLOB_BLOB_ASYNC_TRANSPORT_REQUEST_BUILDER_H_
-
-#include <stddef.h>
-#include <stdint.h>
-
-#include <map>
-#include <memory>
-#include <vector>
-
-#include "base/macros.h"
-#include "storage/browser/blob/blob_data_builder.h"
-#include "storage/browser/storage_browser_export.h"
-#include "storage/common/blob_storage/blob_item_bytes_request.h"
-#include "storage/common/data_element.h"
-
-namespace storage {
-
-// This class generates the requests needed to asynchronously transport the
-// given blob items from the renderer to the browser. The main job of this class
-// is to segment the memory being transfered to efficiently use shared memory,
-// file, and IPC max sizes.
-// Note: This class does not compute requests by using the 'shortcut' method,
-// where the data is already present in the blob description, and will
-// always give the caller requests for requesting all data from the
-// renderer.
-class STORAGE_EXPORT BlobAsyncTransportRequestBuilder {
- public:
- struct RendererMemoryItemRequest {
- RendererMemoryItemRequest();
- // This is the index of the item in the builder on the browser side.
- size_t browser_item_index;
- // Note: For files this offset should always be 0, as the file offset in
- // segmentation is handled by the handle_offset in the message. This
- // offset is used for populating a chunk when the data comes back to
- // the browser.
- size_t browser_item_offset;
- BlobItemBytesRequest message;
- };
-
- BlobAsyncTransportRequestBuilder();
- virtual ~BlobAsyncTransportRequestBuilder();
-
- // Initializes the request builder for file requests. One or more files are
- // created to hold the given data. Each file can hold data from multiple
- // items, and the data from each item can be in multiple files.
- // See file_handle_sizes() for the generated file sizes.
- // max_file_size: This is the maximum size for a file to back a blob.
- // blob_total_size: This is the total in-memory size of the blob.
- // elements: These are the descriptions of the blob items being sent from the
- // renderer.
- // builder: This is the builder that is populated with the 'future' versions
- // of the data elements. In this case, we call 'AppendFutureData' in
- // the items that we expect to be backed by files writen by the
- // renderer.
- void InitializeForFileRequests(size_t max_file_size,
- uint64_t blob_total_size,
- const std::vector<DataElement>& elements,
- BlobDataBuilder* builder);
-
- // Initializes the request builder for shared memory requests. We try to
- // consolidate as much memory as possible in each shared memory segment we
- // use.
- // See shared_memory_handle_sizes() for the shared memory sizes.
- // max_shared_memory_size: This is the maximum size for a shared memory
- // segment used to transport the data between renderer
- // and browser.
- // blob_total_size: This is the total in-memory size of the blob.
- // elements: These are the descriptions of the blob items being sent from the
- // renderer.
- // builder: This is the builder that is populated with the 'future' versions
- // of the data elements. In this case, we call 'AppendFutureData' for
- // the items we expect to be populated later.
- void InitializeForSharedMemoryRequests(
- size_t max_shared_memory_size,
- uint64_t blob_total_size,
- const std::vector<DataElement>& elements,
- BlobDataBuilder* builder);
-
- // Initializes the request builder for IPC requests. We put as much memory
- // in a single IPC request as possible.
- // max_ipc_memory_size: This is the maximum size for an IPC message which will
- // be used to transport memory from the renderer to the
- // browser.
- // blob_total_size: This is the total in-memory size of the blob.
- // elements: These are the descriptions of the blob items being sent from the
- // renderer.
- // builder: This is the builder that is populated with the 'future' versions
- // of the data elements. In this case, we call 'AppendFutureData' for
- // the items we expect to be populated later.
- void InitializeForIPCRequests(size_t max_ipc_memory_size,
- uint64_t blob_total_size,
- const std::vector<DataElement>& elements,
- BlobDataBuilder* builder);
-
- // The sizes of the shared memory handles being used (by handle index).
- const std::vector<size_t>& shared_memory_sizes() const {
- return shared_memory_sizes_;
- }
-
- // The sizes of the file handles being used (by handle index).
- const std::vector<size_t>& file_sizes() const { return file_sizes_; }
-
- // The requests for memory, segmented as described above, along with their
- // destination browser indexes and offsets.
- const std::vector<RendererMemoryItemRequest>& requests() const {
- return requests_;
- }
-
- // The total bytes size of memory items in the blob.
- uint64_t total_bytes_size() const { return total_bytes_size_; }
-
- static bool ShouldBeShortcut(const std::vector<DataElement>& items,
- size_t memory_available);
-
- private:
- static void ComputeHandleSizes(uint64_t total_memory_size,
- size_t max_segment_size,
- std::vector<size_t>* segment_sizes);
-
- std::vector<size_t> shared_memory_sizes_;
- // The size of the files is capped by the |max_file_size| argument in
- // InitializeForFileRequests, so we can just use size_t.
- std::vector<size_t> file_sizes_;
-
- uint64_t total_bytes_size_;
- std::vector<RendererMemoryItemRequest> requests_;
-
- DISALLOW_COPY_AND_ASSIGN(BlobAsyncTransportRequestBuilder);
-};
-
-} // namespace storage
-
-#endif // STORAGE_BROWSER_BLOB_BLOB_ASYNC_TRANSPORT_REQUEST_BUILDER_H_

Powered by Google App Engine
This is Rietveld 408576698