Inside Bitcoin
Opening the selected file…
Inside Bitcoin
Opening the selected file…
The code behind the network, with room to understand it.
Release published 2026-10-28 · Snapshot fetched 2026-11-01. Latest stable release at fetch time; development branches and Git history are excluded. Only the selected code window and visible folders load here.
751}752}754bool BerkeleyROBatch::ReadKey(DataStream&& key, DataStream& value)755{756SerializeData key_data{key.begin(), key.end()};757const auto it{m_database.m_records.find(key_data)};758if (it == m_database.m_records.end()) {759return false;760}761auto val = it->second;762value.clear();763value.write(std::span(val));764return true;765}767bool BerkeleyROBatch::HasKey(DataStream&& key)768{769SerializeData key_data{key.begin(), key.end()};770return m_database.m_records.contains(key_data);771}773BerkeleyROCursor::BerkeleyROCursor(const BerkeleyRODatabase& database, std::span<const std::byte> prefix)774: m_database(database)775{776std::tie(m_cursor, m_cursor_end) = m_database.m_records.equal_range(BytePrefix{prefix});777}779DatabaseCursor::Status BerkeleyROCursor::Next(DataStream& ssKey, DataStream& ssValue)780{781if (m_cursor == m_cursor_end) {782return DatabaseCursor::Status::DONE;783}784ssKey.write(std::span(m_cursor->first));785ssValue.write(std::span(m_cursor->second));786m_cursor++;787return DatabaseCursor::Status::MORE;788}790std::unique_ptr<DatabaseCursor> BerkeleyROBatch::GetNewPrefixCursor(std::span<const std::byte> prefix)791{792return std::make_unique<BerkeleyROCursor>(m_database, prefix);793}795std::unique_ptr<BerkeleyRODatabase> MakeBerkeleyRODatabase(const fs::path& path, const DatabaseOptions& options, DatabaseStatus& status, bilingual_str& error)796{797fs::path data_file = BDBDataFile(path);798try {799std::unique_ptr<BerkeleyRODatabase> db = std::make_unique<BerkeleyRODatabase>(data_file);800status = DatabaseStatus::SUCCESS;801return db;802} catch (const std::runtime_error& e) {803error.original = e.what();804status = DatabaseStatus::FAILED_LOAD;805return nullptr;806}807}808} // namespace wallet