OLD | NEW |
---|---|
(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 #include <ostream> | |
10 | |
11 #include "base/basictypes.h" | |
12 #include "storage/common/blob_storage/blob_storage_constants.h" | |
13 #include "storage/common/storage_common_export.h" | |
14 | |
15 namespace storage { | |
16 | |
17 // This class is serialized over IPC to request bytes from a blob item. | |
18 struct STORAGE_COMMON_EXPORT BlobItemBytesRequest { | |
19 // not using std::numeric_limits<T>::max() because of non-C++11 builds. | |
20 static const size_t kInvalidIndex = SIZE_MAX; | |
21 static const uint64_t kInvalidSize = kuint64max; | |
22 | |
23 static BlobItemBytesRequest CreateIPCRequest(size_t request_number, | |
michaeln
2015/08/18 03:04:41
Not sure the set of create helpers is needed? At t
dmurph
2015/09/15 01:12:12
You'll notice some constants below though, which h
| |
24 size_t renderer_item_index, | |
25 size_t renderer_item_offset, | |
26 size_t size) { | |
27 return BlobItemBytesRequest(request_number, IPCBlobItemRequestStrategy::IPC, | |
28 renderer_item_index, renderer_item_offset, size, | |
29 kInvalidIndex, kInvalidSize); | |
30 } | |
31 | |
32 static BlobItemBytesRequest CreateSharedMemoryRequest( | |
33 size_t request_number, | |
34 size_t renderer_item_index, | |
35 size_t renderer_item_offset, | |
36 size_t size, | |
37 size_t handle_index, | |
38 uint64_t handle_offset) { | |
39 return BlobItemBytesRequest(request_number, | |
40 IPCBlobItemRequestStrategy::SHARED_MEMORY, | |
41 renderer_item_index, renderer_item_offset, size, | |
42 handle_index, handle_offset); | |
43 } | |
44 | |
45 static BlobItemBytesRequest CreateFileRequest(size_t request_number, | |
46 size_t renderer_item_index, | |
47 uint64_t renderer_item_offset, | |
48 uint64_t size, | |
49 size_t handle_index, | |
50 uint64_t handle_offset) { | |
51 return BlobItemBytesRequest( | |
52 request_number, IPCBlobItemRequestStrategy::FILE, renderer_item_index, | |
53 renderer_item_offset, size, handle_index, handle_offset); | |
54 } | |
55 | |
56 BlobItemBytesRequest() | |
57 : request_number(kInvalidIndex), | |
58 transport_strategy(IPCBlobItemRequestStrategy::UNKNOWN), | |
59 renderer_item_index(kInvalidIndex), | |
60 renderer_item_offset(kInvalidSize), | |
61 size(kInvalidSize), | |
62 handle_index(kInvalidIndex), | |
63 handle_offset(kInvalidSize) {} | |
64 ~BlobItemBytesRequest() {} | |
65 | |
66 BlobItemBytesRequest(size_t request_number, | |
67 IPCBlobItemRequestStrategy transport_strategy, | |
68 size_t renderer_item_index, | |
69 uint64_t renderer_item_offset, | |
70 uint64_t size, | |
71 size_t handle_index, | |
72 uint64_t handle_offset) | |
73 : request_number(request_number), | |
74 transport_strategy(transport_strategy), | |
75 renderer_item_index(renderer_item_index), | |
76 renderer_item_offset(renderer_item_offset), | |
77 size(size), | |
78 handle_index(handle_index), | |
79 handle_offset(handle_offset) {} | |
80 | |
81 size_t request_number; | |
82 IPCBlobItemRequestStrategy transport_strategy; | |
83 size_t renderer_item_index; | |
84 uint64_t renderer_item_offset; | |
85 uint64_t size; | |
86 size_t handle_index; | |
87 uint64_t handle_offset; | |
88 }; | |
89 | |
90 #if defined(UNIT_TEST) | |
91 STORAGE_COMMON_EXPORT inline bool operator==(const BlobItemBytesRequest& a, | |
92 const BlobItemBytesRequest& b) { | |
93 return a.request_number == b.request_number && | |
94 a.transport_strategy == b.transport_strategy && | |
95 a.renderer_item_index == b.renderer_item_index && | |
96 a.renderer_item_offset == b.renderer_item_offset && a.size == b.size && | |
97 a.handle_index == b.handle_index && a.handle_offset == b.handle_offset; | |
98 } | |
99 | |
100 STORAGE_COMMON_EXPORT inline bool operator!=(const BlobItemBytesRequest& a, | |
101 const BlobItemBytesRequest& b) { | |
102 return !(a == b); | |
103 } | |
104 | |
105 STORAGE_COMMON_EXPORT inline ::std::ostream& operator<<( | |
106 ::std::ostream& os, | |
107 const BlobItemBytesRequest& request) { | |
108 os << "{ request_number: " << request.request_number | |
109 << ", transport_strategy: " << static_cast<int>(request.transport_strategy) | |
110 << ", renderer_item_index: " << request.renderer_item_index | |
111 << ", renderer_item_offset: " << request.renderer_item_offset | |
112 << ", size: " << request.size << ", handle_index: " << request.handle_index | |
113 << ", handle_offset: " << request.handle_offset << " }"; | |
114 return os; | |
115 } | |
116 #endif // defined(UNIT_TEST) | |
117 | |
118 } // namespace storage | |
119 | |
120 #endif // STORAGE_COMMON_FILEAPI_BLOB_ITEM_BYTES_REQUEST_H_ | |
OLD | NEW |