0
0
Fork 0
mirror of https://github.com/matrix-construct/construct synced 2024-12-26 15:33:54 +01:00

ircd:Ⓜ️ Add prefetch() to event::fetch interface.

This commit is contained in:
Jason Volk 2018-09-01 04:59:39 -07:00
parent 62426ab210
commit 91dff38a57
2 changed files with 50 additions and 0 deletions

View file

@ -232,6 +232,11 @@ struct ircd::m::event::fetch
friend const_buffer get(std::nothrow_t, const id &, const string_view &key, const mutable_buffer &out);
friend const_buffer get(const idx &, const string_view &key, const mutable_buffer &out);
friend const_buffer get(const id &, const string_view &key, const mutable_buffer &out);
friend void prefetch(const idx &, const string_view &key);
friend void prefetch(const idx &, const opts & = default_opts);
friend void prefetch(const id &, const string_view &key);
friend void prefetch(const id &, const opts & = default_opts);
};
struct ircd::m::event::fetch::opts

View file

@ -1369,6 +1369,51 @@ decltype(ircd::m::event::fetch::default_opts)
ircd::m::event::fetch::default_opts
{};
void
ircd::m::prefetch(const event::id &event_id,
const event::fetch::opts &opts)
{
prefetch(index(event_id), opts);
}
void
ircd::m::prefetch(const event::id &event_id,
const string_view &key)
{
prefetch(index(event_id), key);
}
void
ircd::m::prefetch(const event::idx &event_idx,
const event::fetch::opts &opts)
{
const vector_view<const string_view> cols
{
opts.keys
};
for(const auto &col : cols)
if(col)
prefetch(event_idx, col);
}
void
ircd::m::prefetch(const event::idx &event_idx,
const string_view &key)
{
const auto &column_idx
{
json::indexof<event>(key)
};
auto &column
{
dbs::event_column.at(column_idx)
};
db::prefetch(column, byte_view<string_view>{event_idx});
}
ircd::const_buffer
ircd::m::get(const event::id &event_id,
const string_view &key,