12a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// Copyright (c) 2012 The Chromium Authors. All rights reserved. 22a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 32a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// found in the LICENSE file. 42a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 52a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#ifndef NET_TOOLS_DUMP_CACHE_SIMPLE_CACHE_DUMPER_H_ 62a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#define NET_TOOLS_DUMP_CACHE_SIMPLE_CACHE_DUMPER_H_ 72a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 82a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "base/files/file_path.h" 92a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "base/memory/scoped_ptr.h" 102a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "base/threading/thread.h" 112a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "net/base/completion_callback.h" 122a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 132a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)class DiskDumper; 142a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 152a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)namespace disk_cache { 162a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)class Backend; 172a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)class Entry; 182a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} // namespace disk_cache 192a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 202a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)namespace net { 212a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 222a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)class IOBufferWithSize; 232a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 242a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// A class for dumping the contents of a disk cache to a series of text 252a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// files. The files will contain the response headers, followed by the 262a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// response body, as if the HTTP response were written directly to disk. 272a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)class SimpleCacheDumper { 282a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) public: 292a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) SimpleCacheDumper(base::FilePath input_path, base::FilePath output_path); 302a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ~SimpleCacheDumper(); 312a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 322a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // Dumps the cache to disk. Returns OK if the operation was successful, 332a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // and a net error code otherwise. 342a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) int Run(); 352a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 362a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) private: 372a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) enum State { 382a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) STATE_NONE, 392a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) STATE_CREATE_CACHE, 402a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) STATE_CREATE_CACHE_COMPLETE, 412a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) STATE_OPEN_ENTRY, 422a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) STATE_OPEN_ENTRY_COMPLETE, 432a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) STATE_CREATE_ENTRY, 442a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) STATE_CREATE_ENTRY_COMPLETE, 452a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) STATE_READ_HEADERS, 462a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) STATE_READ_HEADERS_COMPLETE, 472a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) STATE_WRITE_HEADERS, 482a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) STATE_WRITE_HEADERS_COMPLETE, 492a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) STATE_READ_BODY, 502a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) STATE_READ_BODY_COMPLETE, 512a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) STATE_WRITE_BODY, 522a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) STATE_WRITE_BODY_COMPLETE, 532a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) STATE_DONE, 542a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) }; 552a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 562a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) int DoLoop(int rv); 572a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 582a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) int DoCreateCache(); 592a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) int DoCreateCacheComplete(int rv); 602a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) int DoOpenEntry(); 612a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) int DoOpenEntryComplete(int rv); 622a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) int DoCreateEntry(); 632a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) int DoCreateEntryComplete(int rv); 642a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) int DoReadHeaders(); 652a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) int DoReadHeadersComplete(int rv); 662a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) int DoWriteHeaders(); 672a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) int DoWriteHeadersComplete(int rv); 682a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) int DoReadBody(); 692a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) int DoReadBodyComplete(int rv); 702a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) int DoWriteBody(); 712a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) int DoWriteBodyComplete(int rv); 722a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) int DoDone(); 732a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 742a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) void OnIOComplete(int rv); 752a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 762a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) State state_; 772a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) base::FilePath input_path_; 782a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) base::FilePath output_path_; 79a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) scoped_ptr<disk_cache::Backend> cache_; 802a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) scoped_ptr<DiskDumper> writer_; 812a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) base::Thread* cache_thread_; 822a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) void* iter_; 832a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) disk_cache::Entry* src_entry_; 842a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) disk_cache::Entry* dst_entry_; 852a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) CompletionCallback io_callback_; 862a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) scoped_refptr<IOBufferWithSize> buf_; 872a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) int rv_; 882a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 892a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) DISALLOW_COPY_AND_ASSIGN(SimpleCacheDumper); 902a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}; 912a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 922a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} // namespace net 932a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 942a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#endif // NET_TOOLS_DUMP_CACHE_SIMPLE_CACHE_DUMPER_H_ 95