mirror of
https://github.com/matrix-construct/construct
synced 2024-12-28 00:14:07 +01:00
construct: Use conf items for console output ratelimits.
This commit is contained in:
parent
8931ce8b38
commit
73def04e3e
1 changed files with 22 additions and 4 deletions
|
@ -36,6 +36,20 @@ stack_sz
|
||||||
{ "default", long(2_MiB) },
|
{ "default", long(2_MiB) },
|
||||||
};
|
};
|
||||||
|
|
||||||
|
conf::item<milliseconds>
|
||||||
|
ratelimit_sleep
|
||||||
|
{
|
||||||
|
{ "name", "construct.console.ratelimit.sleep" },
|
||||||
|
{ "default", 75L },
|
||||||
|
};
|
||||||
|
|
||||||
|
conf::item<size_t>
|
||||||
|
ratelimit_bytes
|
||||||
|
{
|
||||||
|
{ "name", "construct.console.ratelimit.bytes" },
|
||||||
|
{ "default", long(2_KiB) },
|
||||||
|
};
|
||||||
|
|
||||||
static void check_console_active();
|
static void check_console_active();
|
||||||
static void console_fini();
|
static void console_fini();
|
||||||
static void console_init();
|
static void console_init();
|
||||||
|
@ -298,16 +312,20 @@ handle_line_bymodule(const string_view &line)
|
||||||
out.str()
|
out.str()
|
||||||
};
|
};
|
||||||
|
|
||||||
static const size_t mlen(2048);
|
// The string is iterated for rate-limiting. After a configured
|
||||||
for(size_t off(0); off < str.size(); off += mlen)
|
// number of bytes sent to stdout we sleep the ircd::ctx for a
|
||||||
|
// configured number of milliseconds. If these settings are too
|
||||||
|
// aggressive then the output heading to stdout won't appear in
|
||||||
|
// the terminal after the buffers are filled.
|
||||||
|
for(size_t off(0); off < str.size(); off += size_t(ratelimit_bytes))
|
||||||
{
|
{
|
||||||
const string_view substr
|
const string_view substr
|
||||||
{
|
{
|
||||||
str.data() + off, std::min(str.size() - off, mlen)
|
str.data() + off, std::min(str.size() - off, size_t(ratelimit_bytes))
|
||||||
};
|
};
|
||||||
|
|
||||||
std::cout << substr << std::flush;
|
std::cout << substr << std::flush;
|
||||||
ctx::sleep(milliseconds(50));
|
ctx::sleep(milliseconds(ratelimit_sleep));
|
||||||
}
|
}
|
||||||
|
|
||||||
if(!endswith(str, '\n'))
|
if(!endswith(str, '\n'))
|
||||||
|
|
Loading…
Reference in a new issue