Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(15)

Unified Diff: net/disk_cache/flash/log_structured_store.cc

Issue 11532011: Renamed classes for consistency. (Closed) Base URL: http://git.chromium.org/chromium/src.git@master
Patch Set: test 2. Created 8 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « net/disk_cache/flash/log_structured_store.h ('k') | net/disk_cache/flash/log_structured_store_unittest.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: net/disk_cache/flash/log_structured_store.cc
diff --git a/net/disk_cache/flash/log_structured_store.cc b/net/disk_cache/flash/log_structured_store.cc
deleted file mode 100644
index f372de0369582b58de306f4e2ca1e420a2ca686e..0000000000000000000000000000000000000000
--- a/net/disk_cache/flash/log_structured_store.cc
+++ /dev/null
@@ -1,175 +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 "base/logging.h"
-#include "base/memory/scoped_ptr.h"
-#include "base/stl_util.h"
-#include "net/disk_cache/flash/format.h"
-#include "net/disk_cache/flash/log_structured_store.h"
-#include "net/disk_cache/flash/segment.h"
-#include "net/disk_cache/flash/storage.h"
-
-namespace disk_cache {
-
-LogStructuredStore::LogStructuredStore(Storage* storage)
- : storage_(storage),
- num_segments_(storage->size() / kFlashSegmentSize),
- open_segments_(num_segments_),
- write_index_(0),
- current_entry_id_(-1),
- current_entry_num_bytes_left_to_write_(0),
- init_(false),
- closed_(false) {
- DCHECK(storage->size() % kFlashSegmentSize == 0);
-}
-
-LogStructuredStore::~LogStructuredStore() {
- DCHECK(!init_ || closed_);
- STLDeleteElements(&open_segments_);
-}
-
-bool LogStructuredStore::Init() {
- DCHECK(!init_);
- // TODO(agayev): Once we start persisting segment metadata to disk, we will
- // start from where we left off during the last shutdown.
- scoped_ptr<Segment> segment(new Segment(write_index_, false, storage_));
- if (!segment->Init())
- return false;
-
- segment->AddUser();
- open_segments_[write_index_] = segment.release();
- init_ = true;
- return true;
-}
-
-bool LogStructuredStore::Close() {
- DCHECK(init_ && !closed_);
- open_segments_[write_index_]->ReleaseUser();
- if (!open_segments_[write_index_]->Close())
- return false;
- closed_ = true;
- return true;
- // TODO(agayev): persist metadata to disk.
-}
-
-bool LogStructuredStore::CreateEntry(int32 size, int32* id) {
- DCHECK(init_ && !closed_);
- DCHECK(current_entry_id_ == -1 && size <= disk_cache::kFlashSegmentFreeSpace);
-
- // TODO(agayev): Avoid large entries from leaving the segments almost empty.
- if (!open_segments_[write_index_]->CanHold(size)) {
- if (!open_segments_[write_index_]->Close())
- return false;
-
- open_segments_[write_index_]->ReleaseUser();
- if (open_segments_[write_index_]->HasNoUsers()) {
- delete open_segments_[write_index_];
- open_segments_[write_index_] = NULL;
- }
-
- write_index_ = GetNextSegmentIndex();
- scoped_ptr<Segment> segment(new Segment(write_index_, false, storage_));
- if (!segment->Init())
- return false;
-
- segment->AddUser();
- open_segments_[write_index_] = segment.release();
- }
-
- *id = open_segments_[write_index_]->write_offset();
- open_segments_[write_index_]->StoreOffset(*id);
- current_entry_id_ = *id;
- current_entry_num_bytes_left_to_write_ = size;
- open_entries_.insert(current_entry_id_);
- return true;
-}
-
-bool LogStructuredStore::WriteData(const void* buffer, int32 size) {
- DCHECK(init_ && !closed_);
- DCHECK(current_entry_id_ != -1 &&
- size <= current_entry_num_bytes_left_to_write_);
- if (open_segments_[write_index_]->WriteData(buffer, size)) {
- current_entry_num_bytes_left_to_write_ -= size;
- return true;
- }
- return false;
-}
-
-bool LogStructuredStore::OpenEntry(int32 id) {
- DCHECK(init_ && !closed_);
- if (open_entries_.find(id) != open_entries_.end())
- return false;
-
- // Segment is already open.
- int32 index = id / disk_cache::kFlashSegmentSize;
- if (open_segments_[index]) {
- if (!open_segments_[index]->HaveOffset(id))
- return false;
- open_segments_[index]->AddUser();
- open_entries_.insert(id);
- return true;
- }
-
- // Segment is not open.
- scoped_ptr<Segment> segment(new Segment(index, true, storage_));
- if (!segment->Init() || !segment->HaveOffset(id))
- return false;
-
- segment->AddUser();
- open_segments_[index] = segment.release();
- open_entries_.insert(id);
- return true;
-}
-
-bool LogStructuredStore::ReadData(int32 id, void* buffer, int32 size,
- int32 offset) const {
- DCHECK(init_ && !closed_);
- DCHECK(open_entries_.find(id) != open_entries_.end());
-
- int32 index = id / disk_cache::kFlashSegmentSize;
- DCHECK(open_segments_[index] && open_segments_[index]->HaveOffset(id));
- return open_segments_[index]->ReadData(buffer, size, id + offset);
-}
-
-void LogStructuredStore::CloseEntry(int32 id) {
- DCHECK(init_ && !closed_);
- std::set<int32>::iterator entry_iter = open_entries_.find(id);
- DCHECK(entry_iter != open_entries_.end());
-
- if (current_entry_id_ != -1) {
- DCHECK(id == current_entry_id_ && !current_entry_num_bytes_left_to_write_);
- open_entries_.erase(entry_iter);
- current_entry_id_ = -1;
- return;
- }
-
- int32 index = id / disk_cache::kFlashSegmentSize;
- DCHECK(open_segments_[index]);
- open_entries_.erase(entry_iter);
-
- open_segments_[index]->ReleaseUser();
- if (open_segments_[index]->HasNoUsers()) {
- delete open_segments_[index];
- open_segments_[index] = NULL;
- }
-}
-
-int32 LogStructuredStore::GetNextSegmentIndex() {
- DCHECK(init_ && !closed_);
- int32 next_index = (write_index_ + 1) % num_segments_;
-
- while (InUse(next_index)) {
- next_index = (next_index + 1) % num_segments_;
- DCHECK_NE(next_index, write_index_);
- }
- return next_index;
-}
-
-bool LogStructuredStore::InUse(int32 index) const {
- DCHECK(init_ && !closed_);
- DCHECK(index >= 0 && index < num_segments_);
- return open_segments_[index] != NULL;
-}
-
-} // namespace disk_cache
« no previous file with comments | « net/disk_cache/flash/log_structured_store.h ('k') | net/disk_cache/flash/log_structured_store_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698