Ledger query infrastructure. (#275)

* Added json ledger query param parser.

* Added initial query response creation.

* Updated client lib.

* Implemented get ledger by seq no.

* Added ledger query execution wrappers.

* Included log record info.

* Fixed empty output hash issue.

* Added bson support.

* Added db file existance check.

* Added requesy/reply tracking for queries in client lib.

* Improved multi connection usage in client lib.

* Added genesis ledger query support.

* Updated naming convention of query result fields.

* Comments.

* Used sqlite bind() for query param.

* Used binary hashes in ledger sqlite db.

* Missing const.
This commit is contained in:
Ravin Perera
2021-03-29 11:20:15 +05:30
committed by GitHub
parent 44fa3134ea
commit 948113398c
21 changed files with 829 additions and 188 deletions

View File

@@ -234,10 +234,24 @@ namespace usr
}
else if (msg_type == msg::usrmsg::MSGTYPE_STAT)
{
std::vector<uint8_t> msg;
std::vector<uint8_t> resp;
const p2p::sequence_hash lcl_id = ledger::ctx.get_lcl_id();
parser.create_status_response(msg, lcl_id.seq_no, lcl_id.hash.to_string_view());
user.session.send(msg);
parser.create_status_response(resp, lcl_id.seq_no, lcl_id.hash.to_string_view());
user.session.send(resp);
return 0;
}
else if (msg_type == msg::usrmsg::MSGTYPE_LEDGER_QUERY)
{
ledger::query::query_request req;
std::string id;
if (parser.extract_ledger_query(req, id) == -1)
return -1;
const ledger::query::query_result result = ledger::query::execute(user.pubkey, req);
std::vector<uint8_t> resp;
parser.create_ledger_query_response(resp, id, result);
user.session.send(resp);
return 0;
}
else