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