Scorum
account_by_key_api.cpp
Go to the documentation of this file.
3 
4 namespace scorum {
5 namespace account_by_key {
6 
7 namespace detail {
8 
10 {
11 public:
13  : _app(app)
14  {
15  }
16 
17  std::vector<std::vector<account_name_type>> get_key_references(std::vector<public_key_type>& keys) const;
18 
20 };
21 
22 std::vector<std::vector<account_name_type>>
23 account_by_key_api_impl::get_key_references(std::vector<public_key_type>& keys) const
24 {
25  std::vector<std::vector<account_name_type>> final_result;
26  final_result.reserve(keys.size());
27 
28  const auto& key_idx = _app.chain_database()->get_index<key_lookup_index>().indices().get<by_key>();
29 
30  for (auto& key : keys)
31  {
32  std::vector<account_name_type> result;
33  auto lookup_itr = key_idx.lower_bound(key);
34 
35  while (lookup_itr != key_idx.end() && lookup_itr->key == key)
36  {
37  result.push_back(lookup_itr->account);
38  ++lookup_itr;
39  }
40 
41  final_result.emplace_back(std::move(result));
42  }
43 
44  return final_result;
45 }
46 
47 } // detail
48 
50 {
51  my = std::make_shared<detail::account_by_key_api_impl>(ctx.app);
52 }
53 
55 {
56 }
57 
58 std::vector<std::vector<account_name_type>>
59 account_by_key_api::get_key_references(std::vector<public_key_type> keys) const
60 {
61  return my->_app.chain_database()->with_read_lock([&]() { return my->get_key_references(keys); });
62 }
63 }
64 } // scorum::account_by_key
account_by_key_api(const app::api_context &ctx)
std::vector< std::vector< account_name_type > > get_key_references(std::vector< public_key_type > &keys) const
std::shared_ptr< chain::database > chain_database() const
std::vector< std::vector< account_name_type > > get_key_references(std::vector< public_key_type > keys) const
get_key_references
shared_multi_index_container< key_lookup_object, indexed_by< ordered_unique< tag< by_id >, member< key_lookup_object, key_lookup_id_type, &key_lookup_object::id > >, ordered_unique< tag< by_key >, composite_key< key_lookup_object, member< key_lookup_object, public_key_type, &key_lookup_object::key >, member< key_lookup_object, account_name_type, &key_lookup_object::account > > > > > key_lookup_index
Definition: asset.cpp:15