ircd:Ⓜ️:keys: Add query overload for supplied buffer; add conf item defaults.

This commit is contained in:
Jason Volk 2023-03-22 22:56:21 -07:00
parent 95274dd0cd
commit 95d5361c20
2 changed files with 39 additions and 7 deletions

View File

@ -63,7 +63,8 @@ struct ircd::m::keys
static bool get(const queries &, const closure_bool &);
static bool get(const string_view &server_name, const closure &);
static bool get(const string_view &server_name, const string_view &key_id, const closure &);
static bool query(const string_view &query_server, const queries &, const closure_bool &);
static bool query(const string_view &remote, const queries &, const closure_bool &, const mutable_buffer &, const bool dynamic = false);
static bool query(const string_view &remote, const queries &, const closure_bool &);
static size_t fetch(const queries &);
static size_t fetch(const pdus &);

View File

@ -186,6 +186,8 @@ ircd::m::expired(const m::keys &keys)
namespace ircd::m
{
extern conf::item<milliseconds> keys_query_timeout;
extern conf::item<size_t> keys_query_buffer_size;
extern conf::item<bool> keys_query_buffer_dynamic;
}
decltype(ircd::m::keys_query_timeout)
@ -195,22 +197,51 @@ ircd::m::keys_query_timeout
{ "default", 20000L }
};
decltype(ircd::m::keys_query_buffer_size)
ircd::m::keys_query_buffer_size
{
{ "name", "ircd.keys.query.buffer.size" },
{ "default", long(32_KiB) },
};
decltype(ircd::m::keys_query_buffer_dynamic)
ircd::m::keys_query_buffer_dynamic
{
{ "name", "ircd.keys.query.buffer.dynamic" },
{ "default", false },
};
bool
ircd::m::keys::query(const string_view &query_server,
const queries &queries,
const closure_bool &closure)
{
const unique_mutable_buffer buf
{
keys_query_buffer_size
};
const bool dynamic
{
keys_query_buffer_dynamic
};
return query(query_server, queries, closure, buf, dynamic);
}
bool
ircd::m::keys::query(const string_view &query_server,
const queries &queries,
const closure_bool &closure,
const mutable_buffer &buf,
const bool dynamic)
try
{
assert(!query_server.empty());
m::fed::key::opts opts;
opts.remote = query_server;
opts.dynamic = false;
const unique_buffer<mutable_buffer> buf
{
32_KiB
};
opts.dynamic = dynamic;
m::fed::key::query request
{
queries, buf, std::move(opts)