Event subscription infrastructure and ledger events. (#319)

- Introduced event subscription infrastructure for users.
- Added ability to subscribe to ledger events.
- Updated client lib for event subscription support.
This commit is contained in:
Ravin Perera
2021-06-07 10:24:58 +05:30
committed by GitHub
parent a7b7f6c9de
commit cc11ebd7b3
16 changed files with 599 additions and 152 deletions

View File

@@ -56,12 +56,28 @@ namespace msg::usrmsg
busrmsg::create_contract_output_container(msg, hash, outputs, hash_root, unl_sig, lcl_seq_no, lcl_hash);
}
void usrmsg_parser::create_unl_list_container(std::vector<uint8_t> &msg, const ::std::set<std::string> &unl_list) const
void usrmsg_parser::create_unl_notification(std::vector<uint8_t> &msg, const std::set<std::string> &unl_list) const
{
if (protocol == util::PROTOCOL::JSON)
jusrmsg::create_unl_list_container(msg, unl_list);
jusrmsg::create_unl_notification(msg, unl_list);
else
busrmsg::create_unl_list_container(msg, unl_list);
busrmsg::create_unl_notification(msg, unl_list);
}
void usrmsg_parser::create_ledger_created_notification(std::vector<uint8_t> &msg, const ledger::ledger_record &ledger) const
{
if (protocol == util::PROTOCOL::JSON)
jusrmsg::create_ledger_created_notification(msg, ledger);
else
busrmsg::create_ledger_created_notification(msg, ledger);
}
void usrmsg_parser::create_sync_status_notification(std::vector<uint8_t> &msg, const bool in_sync) const
{
if (protocol == util::PROTOCOL::JSON)
jusrmsg::create_sync_status_notification(msg, in_sync);
else
busrmsg::create_sync_status_notification(msg, in_sync);
}
void usrmsg_parser::create_ledger_query_response(std::vector<uint8_t> &msg, std::string_view reply_for,
@@ -114,6 +130,14 @@ namespace msg::usrmsg
return busrmsg::extract_input_container(input, nonce, max_ledger_seq_no, encoded_content);
}
int usrmsg_parser::extract_subscription_request(usr::NOTIFICATION_CHANNEL &channel, bool &enabled)
{
if (protocol == util::PROTOCOL::JSON)
return jusrmsg::extract_subscription_request(channel, enabled, jdoc);
else
return busrmsg::extract_subscription_request(channel, enabled, bdoc);
}
int usrmsg_parser::extract_ledger_query(ledger::query::query_request &extracted_query, std::string &extracted_id) const
{
if (protocol == util::PROTOCOL::JSON)