// Copyright 2013 The Chromium Authors // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #ifndef COMPONENTS_SERVICES_STORAGE_INDEXED_DB_TRANSACTIONAL_LEVELDB_TRANSACTIONAL_LEVELDB_ITERATOR_H_ #define COMPONENTS_SERVICES_STORAGE_INDEXED_DB_TRANSACTIONAL_LEVELDB_TRANSACTIONAL_LEVELDB_ITERATOR_H_ #include <memory> #include <string_view> #include <tuple> #include <vector> #include "base/memory/raw_ptr.h" #include "base/memory/raw_ref.h" #include "base/memory/weak_ptr.h" #include "third_party/leveldatabase/src/include/leveldb/status.h" namespace leveldb { class Comparator; class Iterator; } // namespace leveldb namespace content { class TransactionalLevelDBDatabase; class TransactionalLevelDBTransaction; class LevelDBSnapshot; // This iterator is meant to stay 'live' to the data on disk for a given // transaction, and be evict-able for saving memory. Specifically, it supports: // * Staying up to date with the data on disk as long as the NotifyModified // method is called for every change, and // * detaching itself (unloading it's leveldb::Iterator) to reduce memory when // EvictLevelDBIterator is called. // Note: the returned std::string_view from Key or Value can become // invalidated when EvictLevelDBIterator, OnDatabaseKeyModified, or // OnDatabaseRangeModified are called. class TransactionalLevelDBIterator { … }; } // namespace content #endif // COMPONENTS_SERVICES_STORAGE_INDEXED_DB_TRANSACTIONAL_LEVELDB_TRANSACTIONAL_LEVELDB_ITERATOR_H_