LedgerHeaderFrame::pointer LedgerHeaderFrame::loadBySequence(uint32_t seq, Database& db, soci::session& sess) { LedgerHeaderFrame::pointer lhf; string headerEncoded; { auto timer = db.getSelectTimer("ledger-header"); sess << "SELECT data FROM ledgerheaders " "WHERE ledgerseq = :s", into(headerEncoded), use(seq); } if (sess.got_data()) { lhf = decodeFromData(headerEncoded); uint32_t loadedSeq = lhf->mHeader.ledgerSeq; if (loadedSeq != seq) { throw std::runtime_error( fmt::format("Wrong sequence number in ledger header database: " "loaded ledger {} contains {}", seq, loadedSeq)); } } return lhf; }
LedgerHeaderFrame::pointer LedgerHeaderFrame::loadBySequence(uint32_t seq, Database& db, soci::session& sess) { LedgerHeaderFrame::pointer lhf; string headerEncoded; { auto timer = db.getSelectTimer("ledger-header"); sess << "SELECT data FROM ledgerheaders " "WHERE ledgerseq = :s", into(headerEncoded), use(seq); } if (sess.got_data()) { lhf = decodeFromData(headerEncoded); if (lhf->mHeader.ledgerSeq != seq) { // wrong sequence number lhf.reset(); } } return lhf; }