Chromium Code Reviews| 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 |