diff options
Diffstat (limited to 'src/cryptonote_core')
-rw-r--r-- | src/cryptonote_core/blockchain.cpp | 7 | ||||
-rw-r--r-- | src/cryptonote_core/blockchain_db.h | 24 |
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 |