From a7c0b0c39b35e36d78226f7cd53921325f7e0950 Mon Sep 17 00:00:00 2001 From: Joe Thornber Date: Mon, 29 Apr 2013 12:31:30 +0100 Subject: [PATCH] [block, lock_checker] add an is_locked() method for use in unit tests. --- persistent-data/block.h | 5 +++++ persistent-data/block.tcc | 7 +++++++ persistent-data/lock_tracker.cc | 7 +++++++ persistent-data/lock_tracker.h | 2 ++ 4 files changed, 21 insertions(+) diff --git a/persistent-data/block.h b/persistent-data/block.h index 1af46ba..a39da3d 100644 --- a/persistent-data/block.h +++ b/persistent-data/block.h @@ -198,6 +198,11 @@ namespace persistent_data { void flush() const; + + // This is just for unit tests, don't call in application + // code. + bool is_locked(block_address b) const; + private: void check(block_address b) const; void write_block(typename block::ptr b) const; diff --git a/persistent-data/block.tcc b/persistent-data/block.tcc index 28c87dc..1ffb0c7 100644 --- a/persistent-data/block.tcc +++ b/persistent-data/block.tcc @@ -527,4 +527,11 @@ block_manager::flush() const boost::bind(&block_manager::write_block, this, _1)); } +template +bool +block_manager::is_locked(block_address b) const +{ + return tracker_.is_locked(b); +} + //---------------------------------------------------------------- diff --git a/persistent-data/lock_tracker.cc b/persistent-data/lock_tracker.cc index eac9752..b7800c3 100644 --- a/persistent-data/lock_tracker.cc +++ b/persistent-data/lock_tracker.cc @@ -116,5 +116,12 @@ lock_tracker::check_key(uint64_t key) const throw runtime_error("invalid key"); } +bool +lock_tracker::is_locked(uint64_t key) const +{ + check_key(key); + return found(locks_.find(key)); +} + //---------------------------------------------------------------- diff --git a/persistent-data/lock_tracker.h b/persistent-data/lock_tracker.h index f54ad42..497e2cd 100644 --- a/persistent-data/lock_tracker.h +++ b/persistent-data/lock_tracker.h @@ -37,6 +37,8 @@ namespace persistent_data { void superblock_lock(uint64_t key); void unlock(uint64_t key); + bool is_locked(uint64_t key) const; + private: typedef std::map LockMap;