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" 121320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "net/disk_cache/disk_cache.h" 132a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 142a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)class DiskDumper; 152a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 162a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)namespace net { 172a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 182a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)class IOBufferWithSize; 192a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 202a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// A class for dumping the contents of a disk cache to a series of text 212a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// files. The files will contain the response headers, followed by the 222a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// response body, as if the HTTP response were written directly to disk. 232a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)class SimpleCacheDumper { 242a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) public: 252a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) SimpleCacheDumper(base::FilePath input_path, base::FilePath output_path); 262a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ~SimpleCacheDumper(); 272a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 282a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // Dumps the cache to disk. Returns OK if the operation was successful, 292a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // and a net error code otherwise. 302a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) int Run(); 312a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 322a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) private: 332a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) enum State { 342a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) STATE_NONE, 352a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) STATE_CREATE_CACHE, 362a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) STATE_CREATE_CACHE_COMPLETE, 372a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) STATE_OPEN_ENTRY, 382a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) STATE_OPEN_ENTRY_COMPLETE, 392a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) STATE_CREATE_ENTRY, 402a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) STATE_CREATE_ENTRY_COMPLETE, 412a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) STATE_READ_HEADERS, 422a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) STATE_READ_HEADERS_COMPLETE, 432a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) STATE_WRITE_HEADERS, 442a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) STATE_WRITE_HEADERS_COMPLETE, 452a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) STATE_READ_BODY, 462a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) STATE_READ_BODY_COMPLETE, 472a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) STATE_WRITE_BODY, 482a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) STATE_WRITE_BODY_COMPLETE, 492a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) STATE_DONE, 502a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) }; 512a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 522a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) int DoLoop(int rv); 532a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 542a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) int DoCreateCache(); 552a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) int DoCreateCacheComplete(int rv); 562a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) int DoOpenEntry(); 572a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) int DoOpenEntryComplete(int rv); 582a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) int DoCreateEntry(); 592a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) int DoCreateEntryComplete(int rv); 602a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) int DoReadHeaders(); 612a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) int DoReadHeadersComplete(int rv); 622a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) int DoWriteHeaders(); 632a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) int DoWriteHeadersComplete(int rv); 642a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) int DoReadBody(); 652a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) int DoReadBodyComplete(int rv); 662a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) int DoWriteBody(); 672a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) int DoWriteBodyComplete(int rv); 682a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) int DoDone(); 692a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 702a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) void OnIOComplete(int rv); 712a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 722a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) State state_; 732a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) base::FilePath input_path_; 742a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) base::FilePath output_path_; 75a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) scoped_ptr<disk_cache::Backend> cache_; 762a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) scoped_ptr<DiskDumper> writer_; 772a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) base::Thread* cache_thread_; 781320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci scoped_ptr<disk_cache::Backend::Iterator> iter_; 792a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) disk_cache::Entry* src_entry_; 802a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) disk_cache::Entry* dst_entry_; 812a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) CompletionCallback io_callback_; 822a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) scoped_refptr<IOBufferWithSize> buf_; 832a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) int rv_; 842a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 852a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) DISALLOW_COPY_AND_ASSIGN(SimpleCacheDumper); 862a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}; 872a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 882a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} // namespace net 892a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 902a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#endif // NET_TOOLS_DUMP_CACHE_SIMPLE_CACHE_DUMPER_H_ 91