OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #ifndef BASE_PICKLE_H__ | 5 #ifndef BASE_PICKLE_H__ |
6 #define BASE_PICKLE_H__ | 6 #define BASE_PICKLE_H__ |
7 | 7 |
8 #include <string> | 8 #include <string> |
9 | 9 |
10 #include "base/base_export.h" | 10 #include "base/base_export.h" |
(...skipping 255 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
266 // with BeginWriteData), the Pickle can | 266 // with BeginWriteData), the Pickle can |
267 // be 'trimmed' if the amount of data required is less than originally | 267 // be 'trimmed' if the amount of data required is less than originally |
268 // requested. For example, you may have created a buffer with 10K of data, | 268 // requested. For example, you may have created a buffer with 10K of data, |
269 // but decided to only fill 10 bytes of that data. Use this function | 269 // but decided to only fill 10 bytes of that data. Use this function |
270 // to trim the buffer so that we don't send 9990 bytes of unused data. | 270 // to trim the buffer so that we don't send 9990 bytes of unused data. |
271 // You cannot increase the size of the variable buffer; only shrink it. | 271 // You cannot increase the size of the variable buffer; only shrink it. |
272 // This function assumes that the length of the variable buffer has | 272 // This function assumes that the length of the variable buffer has |
273 // not been changed. | 273 // not been changed. |
274 void TrimWriteData(int length); | 274 void TrimWriteData(int length); |
275 | 275 |
| 276 // Reserves space for upcoming writes when multiple writes will be made and |
| 277 // their sizes are computed in advance. It can be significantly faster to call |
| 278 // Reserve() before calling WriteFoo() multiple times. |
| 279 void Reserve(size_t additional_capacity); |
| 280 |
276 // Payload follows after allocation of Header (header size is customizable). | 281 // Payload follows after allocation of Header (header size is customizable). |
277 struct Header { | 282 struct Header { |
278 uint32 payload_size; // Specifies the size of the payload. | 283 uint32 payload_size; // Specifies the size of the payload. |
279 }; | 284 }; |
280 | 285 |
281 // Returns the header, cast to a user-specified type T. The type T must be a | 286 // Returns the header, cast to a user-specified type T. The type T must be a |
282 // subclass of Header and its size must correspond to the header_size passed | 287 // subclass of Header and its size must correspond to the header_size passed |
283 // to the Pickle constructor. | 288 // to the Pickle constructor. |
284 template <class T> | 289 template <class T> |
285 T* headerT() { | 290 T* headerT() { |
(...skipping 68 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
354 // Allocation size of payload (or -1 if allocation is const). | 359 // Allocation size of payload (or -1 if allocation is const). |
355 size_t capacity_; | 360 size_t capacity_; |
356 size_t variable_buffer_offset_; // IF non-zero, then offset to a buffer. | 361 size_t variable_buffer_offset_; // IF non-zero, then offset to a buffer. |
357 | 362 |
358 FRIEND_TEST_ALL_PREFIXES(PickleTest, Resize); | 363 FRIEND_TEST_ALL_PREFIXES(PickleTest, Resize); |
359 FRIEND_TEST_ALL_PREFIXES(PickleTest, FindNext); | 364 FRIEND_TEST_ALL_PREFIXES(PickleTest, FindNext); |
360 FRIEND_TEST_ALL_PREFIXES(PickleTest, FindNextWithIncompleteHeader); | 365 FRIEND_TEST_ALL_PREFIXES(PickleTest, FindNextWithIncompleteHeader); |
361 }; | 366 }; |
362 | 367 |
363 #endif // BASE_PICKLE_H__ | 368 #endif // BASE_PICKLE_H__ |
OLD | NEW |