Home | History | Annotate | Download | only in dump_cache
      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
      3 // found in the LICENSE file.
      4 
      5 #ifndef NET_TOOLS_DUMP_CACHE_SIMPLE_CACHE_DUMPER_H_
      6 #define NET_TOOLS_DUMP_CACHE_SIMPLE_CACHE_DUMPER_H_
      7 
      8 #include "base/files/file_path.h"
      9 #include "base/memory/scoped_ptr.h"
     10 #include "base/threading/thread.h"
     11 #include "net/base/completion_callback.h"
     12 #include "net/disk_cache/disk_cache.h"
     13 
     14 class DiskDumper;
     15 
     16 namespace net {
     17 
     18 class IOBufferWithSize;
     19 
     20 // A class for dumping the contents of a disk cache to a series of text
     21 // files.  The files will contain the response headers, followed by the
     22 // response body, as if the HTTP response were written directly to disk.
     23 class SimpleCacheDumper {
     24  public:
     25   SimpleCacheDumper(base::FilePath input_path, base::FilePath output_path);
     26   ~SimpleCacheDumper();
     27 
     28   // Dumps the cache to disk. Returns OK if the operation was successful,
     29   // and a net error code otherwise.
     30   int Run();
     31 
     32  private:
     33   enum State {
     34     STATE_NONE,
     35     STATE_CREATE_CACHE,
     36     STATE_CREATE_CACHE_COMPLETE,
     37     STATE_OPEN_ENTRY,
     38     STATE_OPEN_ENTRY_COMPLETE,
     39     STATE_CREATE_ENTRY,
     40     STATE_CREATE_ENTRY_COMPLETE,
     41     STATE_READ_HEADERS,
     42     STATE_READ_HEADERS_COMPLETE,
     43     STATE_WRITE_HEADERS,
     44     STATE_WRITE_HEADERS_COMPLETE,
     45     STATE_READ_BODY,
     46     STATE_READ_BODY_COMPLETE,
     47     STATE_WRITE_BODY,
     48     STATE_WRITE_BODY_COMPLETE,
     49     STATE_DONE,
     50   };
     51 
     52   int DoLoop(int rv);
     53 
     54   int DoCreateCache();
     55   int DoCreateCacheComplete(int rv);
     56   int DoOpenEntry();
     57   int DoOpenEntryComplete(int rv);
     58   int DoCreateEntry();
     59   int DoCreateEntryComplete(int rv);
     60   int DoReadHeaders();
     61   int DoReadHeadersComplete(int rv);
     62   int DoWriteHeaders();
     63   int DoWriteHeadersComplete(int rv);
     64   int DoReadBody();
     65   int DoReadBodyComplete(int rv);
     66   int DoWriteBody();
     67   int DoWriteBodyComplete(int rv);
     68   int DoDone();
     69 
     70   void OnIOComplete(int rv);
     71 
     72   State state_;
     73   base::FilePath input_path_;
     74   base::FilePath output_path_;
     75   scoped_ptr<disk_cache::Backend> cache_;
     76   scoped_ptr<DiskDumper> writer_;
     77   base::Thread* cache_thread_;
     78   scoped_ptr<disk_cache::Backend::Iterator> iter_;
     79   disk_cache::Entry* src_entry_;
     80   disk_cache::Entry* dst_entry_;
     81   CompletionCallback io_callback_;
     82   scoped_refptr<IOBufferWithSize> buf_;
     83   int rv_;
     84 
     85   DISALLOW_COPY_AND_ASSIGN(SimpleCacheDumper);
     86 };
     87 
     88 }  // namespace net
     89 
     90 #endif  // NET_TOOLS_DUMP_CACHE_SIMPLE_CACHE_DUMPER_H_
     91