|  | // Copyright (c) 2013 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 NET_DISK_CACHE_SIMPLE_SIMPLE_ENTRY_FORMAT_H_ | 
|  | #define NET_DISK_CACHE_SIMPLE_SIMPLE_ENTRY_FORMAT_H_ | 
|  |  | 
|  |  | 
|  | #include "base/basictypes.h" | 
|  | #include "base/port.h" | 
|  | #include "net/base/net_export.h" | 
|  |  | 
|  | namespace base { | 
|  | class Time; | 
|  | } | 
|  |  | 
|  | namespace disk_cache { | 
|  |  | 
|  | const uint64 kSimpleInitialMagicNumber = GG_UINT64_C(0xfcfb6d1ba7725c30); | 
|  | const uint64 kSimpleFinalMagicNumber = GG_UINT64_C(0xf4fa6f45970d41d8); | 
|  | const uint64 kSimpleSparseRangeMagicNumber = GG_UINT64_C(0xeb97bf016553676b); | 
|  |  | 
|  | // A file containing stream 0 and stream 1 in the Simple cache consists of: | 
|  | //   - a SimpleFileHeader. | 
|  | //   - the key. | 
|  | //   - the data from stream 1. | 
|  | //   - a SimpleFileEOF record for stream 1. | 
|  | //   - the data from stream 0. | 
|  | //   - a SimpleFileEOF record for stream 0. | 
|  |  | 
|  | // A file containing stream 2 in the Simple cache consists of: | 
|  | //   - a SimpleFileHeader. | 
|  | //   - the key. | 
|  | //   - the data. | 
|  | //   - at the end, a SimpleFileEOF record. | 
|  | static const int kSimpleEntryFileCount = 2; | 
|  | static const int kSimpleEntryStreamCount = 3; | 
|  |  | 
|  | struct NET_EXPORT_PRIVATE SimpleFileHeader { | 
|  | SimpleFileHeader(); | 
|  |  | 
|  | uint64 initial_magic_number; | 
|  | uint32 version; | 
|  | uint32 key_length; | 
|  | uint32 key_hash; | 
|  | }; | 
|  |  | 
|  | struct NET_EXPORT_PRIVATE SimpleFileEOF { | 
|  | enum Flags { | 
|  | FLAG_HAS_CRC32 = (1U << 0), | 
|  | }; | 
|  |  | 
|  | SimpleFileEOF(); | 
|  |  | 
|  | uint64 final_magic_number; | 
|  | uint32 flags; | 
|  | uint32 data_crc32; | 
|  | // |stream_size| is only used in the EOF record for stream 0. | 
|  | uint32 stream_size; | 
|  | }; | 
|  |  | 
|  | struct SimpleFileSparseRangeHeader { | 
|  | SimpleFileSparseRangeHeader(); | 
|  |  | 
|  | uint64 sparse_range_magic_number; | 
|  | int64 offset; | 
|  | int64 length; | 
|  | uint32 data_crc32; | 
|  | }; | 
|  |  | 
|  | }  // namespace disk_cache | 
|  |  | 
|  | #endif  // NET_DISK_CACHE_SIMPLE_SIMPLE_ENTRY_FORMAT_H_ |