aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorThomas Winget <tewinget@gmail.com>2014-10-15 18:33:53 -0400
committerwarptangent <warptangent@inbox.com>2015-01-04 18:41:44 -0800
commitbc44bc19f4fa9e7eabb1a1b82127398c1a201048 (patch)
treec8aee9100725ecc28c842461339d8edd630131bf /src
parentAdding libglim as an external library (diff)
downloadmonero-bc44bc19f4fa9e7eabb1a1b82127398c1a201048.tar.xz
Initial commit of BlockchainDB tests, other misc
miscellaneous changes to BlockchainDB/blockchain as well, namely replacing instances of std::list with std::vector
Diffstat (limited to 'src')
-rw-r--r--src/cryptonote_core/blockchain.cpp7
-rw-r--r--src/cryptonote_core/blockchain_db.h24
2 files changed, 25 insertions, 6 deletions
diff --git a/src/cryptonote_core/blockchain.cpp b/src/cryptonote_core/blockchain.cpp
index 828ad96e4..a35ce846c 100644
--- a/src/cryptonote_core/blockchain.cpp
+++ b/src/cryptonote_core/blockchain.cpp
@@ -547,11 +547,16 @@ bool Blockchain::get_block_by_hash(const crypto::hash &h, block &blk)
return false;
}
//------------------------------------------------------------------
+//FIXME: this function does not seem to be called from anywhere, but
+// if it ever is, should probably change std::list for std::vector
void Blockchain::get_all_known_block_ids(std::list<crypto::hash> &main, std::list<crypto::hash> &alt, std::list<crypto::hash> &invalid)
{
CRITICAL_REGION_LOCAL(m_blockchain_lock);
- main = m_db->get_hashes_range(0, m_db->height());
+ for (auto& a : m_db->get_hashes_range(0, m_db->height()))
+ {
+ main.push_back(a);
+ }
BOOST_FOREACH(blocks_ext_by_hash::value_type &v, m_alternative_chains)
alt.push_back(v.first);
diff --git a/src/cryptonote_core/blockchain_db.h b/src/cryptonote_core/blockchain_db.h
index 5359909f7..251f9272b 100644
--- a/src/cryptonote_core/blockchain_db.h
+++ b/src/cryptonote_core/blockchain_db.h
@@ -25,6 +25,8 @@
// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
// STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF
// THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+#ifndef BLOCKCHAIN_DB_H
+#define BLOCKCHAIN_DB_H
#include <list>
#include <string>
@@ -70,6 +72,8 @@
* bool lock()
* unlock()
*
+ * vector<str> get_filenames()
+ *
* Blocks:
* bool block_exists(hash)
* height add_block(block, block_size, cumulative_difficulty, coins_generated, transactions)
@@ -364,6 +368,11 @@ private:
public:
+
+ // virtual dtor
+ virtual ~BlockchainDB() { };
+
+
// open the db at location <filename>, or create it if there isn't one.
virtual void open(const std::string& filename) = 0;
@@ -379,6 +388,9 @@ public:
// reset the db -- USE WITH CARE
virtual void reset() = 0;
+ // get all files used by this db (if any)
+ virtual std::vector<std::string> get_filenames() = 0;
+
// FIXME: these are just for functionality mocking, need to implement
// RAII-friendly and multi-read one-write friendly locking mechanism
@@ -435,11 +447,11 @@ public:
// return hash of block at height <height>
virtual crypto::hash get_block_hash_from_height(const uint64_t& height) = 0;
- // return list of blocks in range <h1,h2> of height.
- virtual std::list<block> get_blocks_range(const uint64_t& h1, const uint64_t& h2) = 0;
+ // return vector of blocks in range <h1,h2> of height (inclusively)
+ virtual std::vector<block> get_blocks_range(const uint64_t& h1, const uint64_t& h2) = 0;
- // return list of block hashes in range <h1, h2> of height
- virtual std::list<crypto::hash> get_hashes_range(const uint64_t& h1, const uint64_t& h2) = 0;
+ // return vector of block hashes in range <h1, h2> of height (inclusively)
+ virtual std::vector<crypto::hash> get_hashes_range(const uint64_t& h1, const uint64_t& h2) = 0;
// return the hash of the top block on the chain
virtual crypto::hash top_block_hash() = 0;
@@ -479,7 +491,7 @@ public:
// return list of tx with hashes <hlist>.
// TODO: decide if a missing hash means return empty list
// or just skip that hash
- virtual std::list<transaction> get_tx_list(const std::vector<crypto::hash>& hlist) = 0;
+ virtual std::vector<transaction> get_tx_list(const std::vector<crypto::hash>& hlist) = 0;
// returns height of block that contains transaction with hash <h>
virtual uint64_t get_tx_block_height(const crypto::hash& h) = 0;
@@ -511,3 +523,5 @@ public:
} // namespace cryptonote
+
+#endif // BLOCKCHAIN_DB_H