summaryrefslogtreecommitdiffstats
path: root/content/browser/indexed_db/leveldb/leveldb_transaction.h
diff options
context:
space:
mode:
Diffstat (limited to 'content/browser/indexed_db/leveldb/leveldb_transaction.h')
-rw-r--r--content/browser/indexed_db/leveldb/leveldb_transaction.h179
1 files changed, 0 insertions, 179 deletions
diff --git a/content/browser/indexed_db/leveldb/leveldb_transaction.h b/content/browser/indexed_db/leveldb/leveldb_transaction.h
deleted file mode 100644
index 39d1a30..0000000
--- a/content/browser/indexed_db/leveldb/leveldb_transaction.h
+++ /dev/null
@@ -1,179 +0,0 @@
-// Copyright (c) 2013 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.
-
-#ifndef CONTENT_BROWSER_INDEXED_DB_LEVELDB_LEVELDB_TRANSACTION_H_
-#define CONTENT_BROWSER_INDEXED_DB_LEVELDB_LEVELDB_TRANSACTION_H_
-
-#include <set>
-#include <vector>
-
-#include "base/memory/ref_counted.h"
-#include "base/memory/scoped_ptr.h"
-#include "content/browser/indexed_db/leveldb/avltree.h"
-#include "content/browser/indexed_db/leveldb/leveldb_comparator.h"
-#include "content/browser/indexed_db/leveldb/leveldb_database.h"
-#include "content/browser/indexed_db/leveldb/leveldb_iterator.h"
-#include "content/browser/indexed_db/leveldb/leveldb_slice.h"
-
-namespace content {
-
-class LevelDBWriteBatch;
-
-class CONTENT_EXPORT LevelDBTransaction
- : public base::RefCounted<LevelDBTransaction> {
- public:
- static scoped_refptr<LevelDBTransaction> Create(LevelDBDatabase* db);
-
- void Put(const LevelDBSlice& key, const std::vector<char>& value);
- void Remove(const LevelDBSlice& key);
- bool Get(const LevelDBSlice& key, std::vector<char>& value, bool& found);
- bool Commit();
- void Rollback();
-
- scoped_ptr<LevelDBIterator> CreateIterator();
-
- private:
- LevelDBTransaction(LevelDBDatabase* db);
- virtual ~LevelDBTransaction();
- friend class base::RefCounted<LevelDBTransaction>;
-
- struct AVLTreeNode {
- AVLTreeNode();
- ~AVLTreeNode();
- std::vector<char> key;
- std::vector<char> value;
- bool deleted;
-
- AVLTreeNode* less;
- AVLTreeNode* greater;
- int balance_factor;
- DISALLOW_COPY_AND_ASSIGN(AVLTreeNode);
- };
-
- struct AVLTreeAbstractor {
- typedef AVLTreeNode* handle;
- typedef size_t size;
- typedef LevelDBSlice key;
-
- handle get_less(handle h) { return h->less; }
- void set_less(handle h, handle less) { h->less = less; }
- handle get_greater(handle h) { return h->greater; }
- void set_greater(handle h, handle greater) { h->greater = greater; }
-
- int get_balance_factor(handle h) { return h->balance_factor; }
- void set_balance_factor(handle h, int bf) { h->balance_factor = bf; }
-
- int compare_key_key(const key& ka, const key& kb) {
- return comparator_->Compare(ka, kb);
- }
- int compare_key_node(const key& k, handle h) {
- return compare_key_key(k, key(h->key));
- }
- int compare_node_node(handle ha, handle hb) {
- return compare_key_key(key(ha->key), key(hb->key));
- }
-
- static handle null() { return 0; }
-
- const LevelDBComparator* comparator_;
- };
-
- typedef AVLTree<AVLTreeAbstractor> TreeType;
-
- class TreeIterator : public LevelDBIterator {
- public:
- static scoped_ptr<TreeIterator> Create(LevelDBTransaction* transaction);
- virtual ~TreeIterator();
-
- virtual bool IsValid() const OVERRIDE;
- virtual void SeekToLast() OVERRIDE;
- virtual void Seek(const LevelDBSlice& slice) OVERRIDE;
- virtual void Next() OVERRIDE;
- virtual void Prev() OVERRIDE;
- virtual LevelDBSlice Key() const OVERRIDE;
- virtual LevelDBSlice Value() const OVERRIDE;
- bool IsDeleted() const;
- void Reset();
-
- private:
- TreeIterator(LevelDBTransaction* transaction);
- mutable TreeType::Iterator iterator_; // Dereferencing this is non-const.
- TreeType* tree_;
- LevelDBTransaction* transaction_;
- std::vector<char> key_;
- };
-
- class TransactionIterator : public LevelDBIterator {
- public:
- virtual ~TransactionIterator();
- static scoped_ptr<TransactionIterator> Create(
- scoped_refptr<LevelDBTransaction> transaction);
-
- virtual bool IsValid() const OVERRIDE;
- virtual void SeekToLast() OVERRIDE;
- virtual void Seek(const LevelDBSlice& target) OVERRIDE;
- virtual void Next() OVERRIDE;
- virtual void Prev() OVERRIDE;
- virtual LevelDBSlice Key() const OVERRIDE;
- virtual LevelDBSlice Value() const OVERRIDE;
- void TreeChanged();
-
- private:
- TransactionIterator(scoped_refptr<LevelDBTransaction> transaction);
- void HandleConflictsAndDeletes();
- void SetCurrentIteratorToSmallestKey();
- void SetCurrentIteratorToLargestKey();
- void RefreshTreeIterator() const;
- bool TreeIteratorIsLower() const;
- bool TreeIteratorIsHigher() const;
-
- scoped_refptr<LevelDBTransaction> transaction_;
- const LevelDBComparator* comparator_;
- mutable scoped_ptr<TreeIterator> tree_iterator_;
- scoped_ptr<LevelDBIterator> db_iterator_;
- LevelDBIterator* current_;
-
- enum Direction {
- FORWARD,
- REVERSE
- };
- Direction direction_;
- mutable bool tree_changed_;
- };
-
- void Set(const LevelDBSlice& key,
- const std::vector<char>& value,
- bool deleted);
- void ClearTree();
- void RegisterIterator(TransactionIterator* iterator);
- void UnregisterIterator(TransactionIterator* iterator);
- void NotifyIteratorsOfTreeChange();
-
- LevelDBDatabase* db_;
- const LevelDBSnapshot snapshot_;
- const LevelDBComparator* comparator_;
- TreeType tree_;
- bool finished_;
- std::set<TransactionIterator*> iterators_;
-};
-
-class LevelDBWriteOnlyTransaction {
- public:
- static scoped_ptr<LevelDBWriteOnlyTransaction> Create(LevelDBDatabase* db);
-
- ~LevelDBWriteOnlyTransaction();
- void Remove(const LevelDBSlice& key);
- bool Commit();
-
- private:
- LevelDBWriteOnlyTransaction(LevelDBDatabase* db);
-
- LevelDBDatabase* db_;
- scoped_ptr<LevelDBWriteBatch> write_batch_;
- bool finished_;
-};
-
-} // namespace content
-
-#endif // CONTENT_BROWSER_INDEXED_DB_LEVELDB_LEVELDB_TRANSACTION_H_