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

Side by Side Diff: storage/common/fileapi/blob_item_bytes_request.h

Issue 1098853003: [BlobAsync] Patch 4: Browser Classes & Logic. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Fix for template ambiguity Created 5 years, 7 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 unified diff | Download patch
OLDNEW
(Empty)
1 // Copyright 2015 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 #ifndef STORAGE_COMMON_FILEAPI_BLOB_ITEM_BYTES_REQUEST_H_
6 #define STORAGE_COMMON_FILEAPI_BLOB_ITEM_BYTES_REQUEST_H_
7
8 #include <stdint.h>
9
10 #include "base/basictypes.h"
11
12 namespace storage {
13
14 enum IPCBlobItemRequestStrategy {
15 IPC_BLOB_ITEM_REQUEST_STRATEGY_UNKNOWN = 0,
16 IPC_BLOB_ITEM_REQUEST_STRATEGY_IPC,
17 IPC_BLOB_ITEM_REQUEST_STRATEGY_SHARED_MEMORY,
18 IPC_BLOB_ITEM_REQUEST_STRATEGY_FILE
19 };
20
21 enum IPCBlobCreationCancelCode {
kinuko 2015/05/25 08:32:03 Not yet used?
dmurph 2015/06/13 00:13:10 No not yet, this is for the IPC messages that will
22 IPC_BLOB_CREATION_CANCEL_UNKNOWN = 0,
23 IPC_BLOB_CREATION_CANCEL_OUT_OF_MEMORY,
24 IPC_BLOB_CREATION_CANCEL_FILE_WRITE_FAILED
25 };
26
27 // This class is serialized over IPC to request bytes from a blob item.
28 struct BlobItemBytesRequest {
29 // not using std::numeric_limits<T>::max() because of non-C++11 builds.
30 static const size_t kInvalidIndex = SIZE_MAX;
31 static const uint64_t kInvalidSize = kuint64max;
32
33 static BlobItemBytesRequest CreateIPCRequest(size_t request_number,
34 size_t renderer_item_index,
35 uint64_t renderer_item_offset,
36 uint64_t size) {
37 return BlobItemBytesRequest(
38 request_number, IPC_BLOB_ITEM_REQUEST_STRATEGY_IPC, renderer_item_index,
39 renderer_item_offset, size, kInvalidIndex, kInvalidSize);
40 }
41
42 static BlobItemBytesRequest CreateSharedMemoryRequest(
43 size_t request_number, size_t renderer_item_index,
44 uint64_t renderer_item_offset, uint64_t size, size_t handle_index,
45 uint64_t handle_offset) {
46 return BlobItemBytesRequest(request_number,
47 IPC_BLOB_ITEM_REQUEST_STRATEGY_SHARED_MEMORY,
48 renderer_item_index, renderer_item_offset, size,
49 handle_index, handle_offset);
50 }
51
52 static BlobItemBytesRequest CreateFileRequest(size_t request_number,
53 size_t renderer_item_index,
54 uint64_t renderer_item_offset,
55 uint64_t size,
56 size_t handle_index,
57 uint64_t handle_offset) {
58 return BlobItemBytesRequest(request_number,
59 IPC_BLOB_ITEM_REQUEST_STRATEGY_FILE,
60 renderer_item_index, renderer_item_offset, size,
61 handle_index, handle_offset);
62 }
63
64 BlobItemBytesRequest()
65 : request_number(kInvalidIndex),
66 transport_strategy(IPC_BLOB_ITEM_REQUEST_STRATEGY_UNKNOWN),
67 renderer_item_index(kInvalidIndex),
68 renderer_item_offset(kInvalidSize),
69 size(kInvalidSize),
70 handle_index(kInvalidIndex),
71 handle_offset(kInvalidSize) {}
72 ~BlobItemBytesRequest() {}
73
74 BlobItemBytesRequest(size_t request_number,
75 IPCBlobItemRequestStrategy transport_strategy,
76 size_t renderer_item_index,
77 uint64_t renderer_item_offset, uint64_t size,
78 size_t handle_index, uint64_t handle_offset)
79 : request_number(request_number),
80 transport_strategy(transport_strategy),
81 renderer_item_index(renderer_item_index),
82 renderer_item_offset(renderer_item_offset),
83 size(size),
84 handle_index(handle_index),
85 handle_offset(handle_offset) {}
86
87 size_t request_number;
88 IPCBlobItemRequestStrategy transport_strategy;
89 size_t renderer_item_index;
90 uint64_t renderer_item_offset;
91 uint64_t size;
92 size_t handle_index;
93 uint64_t handle_offset;
94 };
95
96 #if defined(UNIT_TEST)
97 inline bool operator==(const BlobItemBytesRequest& a,
98 const BlobItemBytesRequest& b) {
99 return a.request_number == b.request_number &&
100 a.transport_strategy == b.transport_strategy &&
101 a.renderer_item_index == b.renderer_item_index &&
102 a.renderer_item_offset == b.renderer_item_offset && a.size == b.size &&
103 a.handle_index == b.handle_index && a.handle_offset == b.handle_offset;
104 }
105
106 inline bool operator!=(const BlobItemBytesRequest& a,
107 const BlobItemBytesRequest& b) {
108 return !(a == b);
109 }
110
111 inline ::std::ostream& operator<<(::std::ostream& os,
112 const BlobItemBytesRequest& request) {
113 return os << "{ request_number: " << request.request_number
114 << ", transport_strategy: " << request.transport_strategy
115 << ", renderer_item_index: " << request.renderer_item_index
116 << ", renderer_item_offset: " << request.renderer_item_offset
117 << ", size: " << request.size
118 << ", handle_index: " << request.handle_index
119 << ", handle_offset: " << request.handle_offset << " }";
120 }
121 #endif // defined(UNIT_TEST)
122
123 } // namespace storage
124
125 #endif // STORAGE_COMMON_FILEAPI_BLOB_ITEM_BYTES_REQUEST_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698