aboutsummaryrefslogtreecommitdiff
path: root/src/blockchain_db/lmdb
diff options
context:
space:
mode:
authorRiccardo Spagni <ric@spagni.net>2017-02-21 11:27:15 +0200
committerRiccardo Spagni <ric@spagni.net>2017-02-21 11:27:15 +0200
commit49efd3add9f7b9bbcbd2526538846f6d8e58ac86 (patch)
treee3f1c97cd7dfb7a1c82927f3c2d483bfbe1afbe2 /src/blockchain_db/lmdb
parentMerge pull request #1725 (diff)
parentblockchain_db: add "raw" blobdata getters for block and transaction (diff)
downloadmonero-49efd3add9f7b9bbcbd2526538846f6d8e58ac86.tar.xz
Merge pull request #1727
0288310e blockchain_db: add "raw" blobdata getters for block and transaction (moneromooo-monero)
Diffstat (limited to 'src/blockchain_db/lmdb')
-rw-r--r--src/blockchain_db/lmdb/db_lmdb.cpp27
-rw-r--r--src/blockchain_db/lmdb/db_lmdb.h10
2 files changed, 9 insertions, 28 deletions
diff --git a/src/blockchain_db/lmdb/db_lmdb.cpp b/src/blockchain_db/lmdb/db_lmdb.cpp
index 839d0dd37..f6a4534fb 100644
--- a/src/blockchain_db/lmdb/db_lmdb.cpp
+++ b/src/blockchain_db/lmdb/db_lmdb.cpp
@@ -1460,12 +1460,12 @@ bool BlockchainLMDB::block_exists(const crypto::hash& h, uint64_t *height) const
return ret;
}
-block BlockchainLMDB::get_block(const crypto::hash& h) const
+cryptonote::blobdata BlockchainLMDB::get_block_blob(const crypto::hash& h) const
{
LOG_PRINT_L3("BlockchainLMDB::" << __func__);
check_open();
- return get_block_from_height(get_block_height(h));
+ return get_block_blob_from_height(get_block_height(h));
}
uint64_t BlockchainLMDB::get_block_height(const crypto::hash& h) const
@@ -1498,7 +1498,7 @@ block_header BlockchainLMDB::get_block_header(const crypto::hash& h) const
return get_block(h);
}
-block BlockchainLMDB::get_block_from_height(const uint64_t& height) const
+cryptonote::blobdata BlockchainLMDB::get_block_blob_from_height(const uint64_t& height) const
{
LOG_PRINT_L3("BlockchainLMDB::" << __func__);
check_open();
@@ -1519,13 +1519,9 @@ block BlockchainLMDB::get_block_from_height(const uint64_t& height) const
blobdata bd;
bd.assign(reinterpret_cast<char*>(result.mv_data), result.mv_size);
- block b;
- if (!parse_and_validate_block_from_blob(bd, b))
- throw0(DB_ERROR("Failed to parse block from blob retrieved from the db"));
-
TXN_POSTFIX_RDONLY();
- return b;
+ return bd;
}
uint64_t BlockchainLMDB::get_block_timestamp(const uint64_t& height) const
@@ -1868,7 +1864,7 @@ uint64_t BlockchainLMDB::get_tx_unlock_time(const crypto::hash& h) const
return ret;
}
-bool BlockchainLMDB::get_tx(const crypto::hash& h, transaction &tx) const
+bool BlockchainLMDB::get_tx_blob(const crypto::hash& h, cryptonote::blobdata &bd) const
{
LOG_PRINT_L3("BlockchainLMDB::" << __func__);
check_open();
@@ -1891,26 +1887,13 @@ bool BlockchainLMDB::get_tx(const crypto::hash& h, transaction &tx) const
else if (get_result)
throw0(DB_ERROR(lmdb_error("DB error attempting to fetch tx from hash", get_result).c_str()));
- blobdata bd;
bd.assign(reinterpret_cast<char*>(result.mv_data), result.mv_size);
- if (!parse_and_validate_tx_from_blob(bd, tx))
- throw0(DB_ERROR("Failed to parse tx from blob retrieved from the db"));
-
TXN_POSTFIX_RDONLY();
return true;
}
-transaction BlockchainLMDB::get_tx(const crypto::hash& h) const
-{
- transaction tx;
-
- if (!get_tx(h, tx))
- throw1(TX_DNE(std::string("tx with hash ").append(epee::string_tools::pod_to_hex(h)).append(" not found in db").c_str()));
- return tx;
-}
-
uint64_t BlockchainLMDB::get_tx_count() const
{
LOG_PRINT_L3("BlockchainLMDB::" << __func__);
diff --git a/src/blockchain_db/lmdb/db_lmdb.h b/src/blockchain_db/lmdb/db_lmdb.h
index 32236bbbd..5ea642d23 100644
--- a/src/blockchain_db/lmdb/db_lmdb.h
+++ b/src/blockchain_db/lmdb/db_lmdb.h
@@ -170,13 +170,13 @@ public:
virtual bool block_exists(const crypto::hash& h, uint64_t *height = NULL) const;
- virtual block get_block(const crypto::hash& h) const;
-
virtual uint64_t get_block_height(const crypto::hash& h) const;
virtual block_header get_block_header(const crypto::hash& h) const;
- virtual block get_block_from_height(const uint64_t& height) const;
+ virtual cryptonote::blobdata get_block_blob(const crypto::hash& h) const;
+
+ virtual cryptonote::blobdata get_block_blob_from_height(const uint64_t& height) const;
virtual uint64_t get_block_timestamp(const uint64_t& height) const;
@@ -207,9 +207,7 @@ public:
virtual uint64_t get_tx_unlock_time(const crypto::hash& h) const;
- virtual transaction get_tx(const crypto::hash& h) const;
-
- virtual bool get_tx(const crypto::hash& h, transaction &tx) const;
+ virtual bool get_tx_blob(const crypto::hash& h, cryptonote::blobdata &tx) const;
virtual uint64_t get_tx_count() const;