Index: net/tools/dump_cache/simple_cache_dumper.cc |
diff --git a/net/tools/dump_cache/simple_cache_dumper.cc b/net/tools/dump_cache/simple_cache_dumper.cc |
deleted file mode 100644 |
index 9be140dd4518d2cef729c55bc8921c22c6b7d111..0000000000000000000000000000000000000000 |
--- a/net/tools/dump_cache/simple_cache_dumper.cc |
+++ /dev/null |
@@ -1,278 +0,0 @@ |
-// Copyright (c) 2012 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. |
- |
-#include "net/tools/dump_cache/simple_cache_dumper.h" |
- |
-#include "base/at_exit.h" |
-#include "base/command_line.h" |
-#include "base/logging.h" |
-#include "base/memory/scoped_ptr.h" |
-#include "base/message_loop/message_loop.h" |
-#include "base/message_loop/message_loop_proxy.h" |
-#include "base/profiler/scoped_tracker.h" |
-#include "base/threading/thread.h" |
-#include "net/base/cache_type.h" |
-#include "net/base/io_buffer.h" |
-#include "net/base/net_errors.h" |
-#include "net/disk_cache/disk_cache.h" |
-#include "net/tools/dump_cache/cache_dumper.h" |
- |
-namespace net { |
- |
-SimpleCacheDumper::SimpleCacheDumper(base::FilePath input_path, |
- base::FilePath output_path) |
- : state_(STATE_NONE), |
- input_path_(input_path), |
- output_path_(output_path), |
- writer_(new DiskDumper(output_path)), |
- cache_thread_(new base::Thread("CacheThead")), |
- src_entry_(NULL), |
- dst_entry_(NULL), |
- io_callback_(base::Bind(&SimpleCacheDumper::OnIOComplete, |
- base::Unretained(this))), |
- rv_(0) { |
-} |
- |
-SimpleCacheDumper::~SimpleCacheDumper() { |
-} |
- |
-int SimpleCacheDumper::Run() { |
- base::MessageLoopForIO main_message_loop; |
- |
- LOG(INFO) << "Reading cache from: " << input_path_.value(); |
- LOG(INFO) << "Writing cache to: " << output_path_.value(); |
- |
- if (!cache_thread_->StartWithOptions( |
- base::Thread::Options(base::MessageLoop::TYPE_IO, 0))) { |
- LOG(ERROR) << "Unable to start thread"; |
- return ERR_UNEXPECTED; |
- } |
- state_ = STATE_CREATE_CACHE; |
- int rv = DoLoop(OK); |
- if (rv == ERR_IO_PENDING) { |
- main_message_loop.Run(); |
- return rv_; |
- } |
- return rv; |
-} |
- |
-int SimpleCacheDumper::DoLoop(int rv) { |
- do { |
- State state = state_; |
- state_ = STATE_NONE; |
- switch (state) { |
- case STATE_CREATE_CACHE: |
- CHECK_EQ(OK, rv); |
- rv = DoCreateCache(); |
- break; |
- case STATE_CREATE_CACHE_COMPLETE: |
- rv = DoCreateCacheComplete(rv); |
- break; |
- case STATE_OPEN_ENTRY: |
- CHECK_EQ(OK, rv); |
- rv = DoOpenEntry(); |
- break; |
- case STATE_OPEN_ENTRY_COMPLETE: |
- rv = DoOpenEntryComplete(rv); |
- break; |
- case STATE_CREATE_ENTRY: |
- CHECK_EQ(OK, rv); |
- rv = DoCreateEntry(); |
- break; |
- case STATE_CREATE_ENTRY_COMPLETE: |
- rv = DoCreateEntryComplete(rv); |
- break; |
- case STATE_READ_HEADERS: |
- CHECK_EQ(OK, rv); |
- rv = DoReadHeaders(); |
- break; |
- case STATE_READ_HEADERS_COMPLETE: |
- rv = DoReadHeadersComplete(rv); |
- break; |
- case STATE_WRITE_HEADERS: |
- CHECK_EQ(OK, rv); |
- rv = DoWriteHeaders(); |
- break; |
- case STATE_WRITE_HEADERS_COMPLETE: |
- rv = DoWriteHeadersComplete(rv); |
- break; |
- case STATE_READ_BODY: |
- CHECK_EQ(OK, rv); |
- rv = DoReadBody(); |
- break; |
- case STATE_READ_BODY_COMPLETE: |
- rv = DoReadBodyComplete(rv); |
- break; |
- case STATE_WRITE_BODY: |
- CHECK_EQ(OK, rv); |
- rv = DoWriteBody(); |
- break; |
- case STATE_WRITE_BODY_COMPLETE: |
- rv = DoWriteBodyComplete(rv); |
- break; |
- default: |
- NOTREACHED() << "state_: " << state_; |
- break; |
- } |
- } while (state_ != STATE_NONE && rv != ERR_IO_PENDING); |
- return rv; |
-} |
- |
-int SimpleCacheDumper::DoCreateCache() { |
- DCHECK(!cache_); |
- state_ = STATE_CREATE_CACHE_COMPLETE; |
- return disk_cache::CreateCacheBackend( |
- DISK_CACHE, |
- CACHE_BACKEND_DEFAULT, |
- input_path_, |
- 0, |
- false, |
- cache_thread_->message_loop_proxy().get(), |
- NULL, |
- &cache_, |
- io_callback_); |
-} |
- |
-int SimpleCacheDumper::DoCreateCacheComplete(int rv) { |
- if (rv < 0) |
- return rv; |
- |
- reinterpret_cast<disk_cache::BackendImpl*>(cache_.get())->SetUpgradeMode(); |
- reinterpret_cast<disk_cache::BackendImpl*>(cache_.get())->SetFlags( |
- disk_cache::kNoRandom); |
- |
- state_ = STATE_OPEN_ENTRY; |
- return OK; |
-} |
- |
-int SimpleCacheDumper::DoOpenEntry() { |
- DCHECK(!dst_entry_); |
- DCHECK(!src_entry_); |
- state_ = STATE_OPEN_ENTRY_COMPLETE; |
- if (!iter_) |
- iter_ = cache_->CreateIterator(); |
- return iter_->OpenNextEntry(&src_entry_, io_callback_); |
-} |
- |
-int SimpleCacheDumper::DoOpenEntryComplete(int rv) { |
- // ERR_FAILED indicates iteration finished. |
- if (rv == ERR_FAILED) |
- return OK; |
- |
- if (rv < 0) |
- return rv; |
- |
- state_ = STATE_CREATE_ENTRY; |
- return OK; |
-} |
- |
-int SimpleCacheDumper::DoCreateEntry() { |
- DCHECK(!dst_entry_); |
- state_ = STATE_CREATE_ENTRY_COMPLETE; |
- |
- return writer_->CreateEntry(src_entry_->GetKey(), &dst_entry_, |
- io_callback_); |
-} |
- |
-int SimpleCacheDumper::DoCreateEntryComplete(int rv) { |
- if (rv < 0) |
- return rv; |
- |
- state_ = STATE_READ_HEADERS; |
- return OK; |
-} |
- |
-int SimpleCacheDumper::DoReadHeaders() { |
- state_ = STATE_READ_HEADERS_COMPLETE; |
- int32 size = src_entry_->GetDataSize(0); |
- buf_ = new IOBufferWithSize(size); |
- return src_entry_->ReadData(0, 0, buf_.get(), size, io_callback_); |
-} |
- |
-int SimpleCacheDumper::DoReadHeadersComplete(int rv) { |
- if (rv < 0) |
- return rv; |
- |
- state_ = STATE_WRITE_HEADERS; |
- return OK; |
-} |
- |
-int SimpleCacheDumper::DoWriteHeaders() { |
- int rv = writer_->WriteEntry( |
- dst_entry_, 0, 0, buf_.get(), buf_->size(), io_callback_); |
- if (rv == 0) |
- return ERR_FAILED; |
- |
- state_ = STATE_WRITE_HEADERS_COMPLETE; |
- return OK; |
-} |
- |
-int SimpleCacheDumper::DoWriteHeadersComplete(int rv) { |
- if (rv < 0) |
- return rv; |
- |
- state_ = STATE_READ_BODY; |
- return OK; |
-} |
- |
-int SimpleCacheDumper::DoReadBody() { |
- state_ = STATE_READ_BODY_COMPLETE; |
- int32 size = src_entry_->GetDataSize(1); |
- // If the body is empty, we can neither read nor write it, so |
- // just move to the next. |
- if (size <= 0) { |
- state_ = STATE_WRITE_BODY_COMPLETE; |
- return OK; |
- } |
- buf_ = new IOBufferWithSize(size); |
- return src_entry_->ReadData(1, 0, buf_.get(), size, io_callback_); |
-} |
- |
-int SimpleCacheDumper::DoReadBodyComplete(int rv) { |
- if (rv < 0) |
- return rv; |
- |
- state_ = STATE_WRITE_BODY; |
- return OK; |
-} |
- |
-int SimpleCacheDumper::DoWriteBody() { |
- int rv = writer_->WriteEntry( |
- dst_entry_, 1, 0, buf_.get(), buf_->size(), io_callback_); |
- if (rv == 0) |
- return ERR_FAILED; |
- |
- state_ = STATE_WRITE_BODY_COMPLETE; |
- return OK; |
-} |
- |
-int SimpleCacheDumper::DoWriteBodyComplete(int rv) { |
- if (rv < 0) |
- return rv; |
- |
- src_entry_->Close(); |
- writer_->CloseEntry(dst_entry_, base::Time::Now(), base::Time::Now()); |
- src_entry_ = NULL; |
- dst_entry_ = NULL; |
- |
- state_ = STATE_OPEN_ENTRY; |
- return OK; |
-} |
- |
-void SimpleCacheDumper::OnIOComplete(int rv) { |
- // TODO(vadimt): Remove ScopedTracker below once crbug.com/422516 is fixed. |
- tracked_objects::ScopedTracker tracking_profile( |
- FROM_HERE_WITH_EXPLICIT_FUNCTION( |
- "422516 SimpleCacheDumper::OnIOComplete")); |
- |
- rv = DoLoop(rv); |
- |
- if (rv != ERR_IO_PENDING) { |
- rv_ = rv; |
- cache_.reset(); |
- base::MessageLoop::current()->Quit(); |
- } |
-} |
- |
-} // namespace net |