| // 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_UTIL_H_ | 
 | #define NET_DISK_CACHE_SIMPLE_SIMPLE_UTIL_H_ | 
 |  | 
 | #include <string> | 
 |  | 
 | #include "base/strings/string_piece.h" | 
 | #include "net/base/net_export.h" | 
 | #include "net/disk_cache/simple/simple_file_tracker.h" | 
 | #include "starboard/types.h" | 
 |  | 
 | namespace base { | 
 | class FilePath; | 
 | class Time; | 
 | } | 
 |  | 
 | namespace disk_cache { | 
 |  | 
 | namespace simple_util { | 
 |  | 
 | NET_EXPORT_PRIVATE std::string ConvertEntryHashKeyToHexString( | 
 |     uint64_t hash_key); | 
 |  | 
 | // |key| is the regular cache key, such as an URL. | 
 | // Returns the Hex ascii representation of the uint64_t hash_key. | 
 | NET_EXPORT_PRIVATE std::string GetEntryHashKeyAsHexString( | 
 |     const std::string& key); | 
 |  | 
 | // |key| is the regular HTTP Cache key, which is a URL. | 
 | // Returns the hash of the key as uint64_t. | 
 | NET_EXPORT_PRIVATE uint64_t GetEntryHashKey(const std::string& key); | 
 |  | 
 | // Parses the |hash_key| string into a uint64_t buffer. | 
 | // |hash_key| string must be of the form: FFFFFFFFFFFFFFFF . | 
 | NET_EXPORT_PRIVATE bool GetEntryHashKeyFromHexString( | 
 |     const base::StringPiece& hash_key, | 
 |     uint64_t* hash_key_out); | 
 |  | 
 | // Given a |key| for a (potential) entry in the simple backend and the |index| | 
 | // of a stream on that entry, returns the filename in which that stream would be | 
 | // stored. | 
 | NET_EXPORT_PRIVATE std::string GetFilenameFromKeyAndFileIndex( | 
 |     const std::string& key, | 
 |     int file_index); | 
 |  | 
 | // Same as |GetFilenameFromKeyAndIndex| above, but using a numeric key. | 
 | NET_EXPORT_PRIVATE std::string GetFilenameFromEntryFileKeyAndFileIndex( | 
 |     const SimpleFileTracker::EntryFileKey& key, | 
 |     int file_index); | 
 |  | 
 | // Given a |key| for an entry, returns the name of the sparse data file. | 
 | NET_EXPORT_PRIVATE std::string GetSparseFilenameFromEntryFileKey( | 
 |     const SimpleFileTracker::EntryFileKey& key); | 
 |  | 
 | // Given the size of a key, the size in bytes of the header at the beginning | 
 | // of a simple cache file. | 
 | size_t GetHeaderSize(size_t key_length); | 
 |  | 
 | // Given the size of a file holding a stream in the simple backend and the key | 
 | // to an entry, returns the number of bytes in the stream. | 
 | NET_EXPORT_PRIVATE int32_t GetDataSizeFromFileSize(size_t key_length, | 
 |                                                    int64_t file_size); | 
 |  | 
 | // Given the size of a stream in the simple backend and the key to an entry, | 
 | // returns the number of bytes in the file. | 
 | NET_EXPORT_PRIVATE int64_t GetFileSizeFromDataSize(size_t key_length, | 
 |                                                    int32_t data_size); | 
 |  | 
 | // Given the stream index, returns the number of the file the stream is stored | 
 | // in. | 
 | NET_EXPORT_PRIVATE int GetFileIndexFromStreamIndex(int stream_index); | 
 |  | 
 | // Fills |out_time| with the time the file last modified time. Unlike the | 
 | // functions in file.h, the time resolution is milliseconds. | 
 | NET_EXPORT_PRIVATE bool GetMTime(const base::FilePath& path, | 
 |                                  base::Time* out_mtime); | 
 |  | 
 | // Deletes a file, insuring POSIX semantics. Provided that all open handles to | 
 | // this file were opened with File::FLAG_SHARE_DELETE, it is possible to delete | 
 | // an open file and continue to use that file. After deleting an open file, it | 
 | // is possible to immediately create a new file with the same name. | 
 | NET_EXPORT_PRIVATE bool SimpleCacheDeleteFile(const base::FilePath& path); | 
 |  | 
 | uint32_t Crc32(const char* data, int length); | 
 |  | 
 | uint32_t IncrementalCrc32(uint32_t previous_crc, const char* data, int length); | 
 |  | 
 | }  // namespace simple_util | 
 |  | 
 | }  // namespace disk_cache | 
 |  | 
 | #endif  // NET_DISK_CACHE_SIMPLE_SIMPLE_UTIL_H_ |