Add noexcept to various lambdas (gcc-11).

This commit is contained in:
Jason Volk 2022-06-23 19:18:05 -07:00
parent b677eeb4b7
commit 5a4a395fc2
52 changed files with 170 additions and 124 deletions

View File

@ -56,7 +56,7 @@ template<class value>
void
ircd::ctx::concurrent<value>::wait()
{
d.wait([this]
d.wait([this]() noexcept
{
return snd == fin;
});
@ -68,7 +68,7 @@ void
ircd::ctx::concurrent<value>::operator()(V&& v)
{
++snd;
p([this, v(std::move(v))]
p([this, v(std::move(v))]() noexcept
{
++rcv; try
{

View File

@ -125,7 +125,7 @@ struct ircd::json::value
value(const json::object &);
value(const json::array &);
value(const nullptr_t &);
value();
value() noexcept;
value(value &&) noexcept;
value(const value &);
value &operator=(value &&) noexcept;
@ -137,6 +137,7 @@ static_assert(sizeof(ircd::json::value) == 16, "");
inline
ircd::json::value::value()
noexcept
:string{nullptr}
,len{0}
,type{STRING}

View File

@ -68,7 +68,8 @@ ircd::m::event::auth::ids(event::id (&out)[N])
const
{
size_t i(0);
m::for_each(*this, [&i, &out](const event::id &event_id)
m::for_each(*this, [&i, &out]
(const event::id &event_id) noexcept
{
out[i++] = event_id;
return i < N;

View File

@ -18,15 +18,15 @@ namespace ircd
// to allocate and copy the token with null termination.
using token_view = closure_bool<std::function, const string_view &>;
bool tokens(const string_view &str, const char sep, const token_view &);
bool tokens(const string_view &str, const string_view &sep, const token_view &);
bool tokens(const string_view &, const char sep, const token_view &) noexcept;
bool tokens(const string_view &, const string_view &sep, const token_view &) noexcept;
size_t tokens(const string_view &str, const char sep, const size_t limit, const token_view &);
size_t tokens(const string_view &str, const string_view &sep, const size_t limit, const token_view &);
size_t tokens(const string_view &, const char sep, const size_t lim, const token_view &) noexcept;
size_t tokens(const string_view &, const string_view &sep, const size_t lim, const token_view &) noexcept;
// Copies tokens into your buffer and null terminates strtok() style. Returns BYTES of buf consumed.
size_t tokens(const string_view &str, const char sep, const mutable_buffer &buf, const token_view &);
size_t tokens(const string_view &str, const string_view &sep, const mutable_buffer &buf, const token_view &);
size_t tokens(const string_view &, const char sep, const mutable_buffer &, const token_view &) noexcept;
size_t tokens(const string_view &, const string_view &sep, const mutable_buffer &, const token_view &) noexcept;
// Receive token view into iterator range
template<class it,
@ -81,17 +81,17 @@ namespace ircd
// Tools
namespace ircd
{
size_t token_count(const string_view &str, const char sep);
size_t token_count(const string_view &str, const string_view &sep);
size_t token_count(const string_view &str, const char sep) noexcept;
size_t token_count(const string_view &str, const string_view &sep) noexcept;
bool token_exists(const string_view &str, const char sep, const string_view &token);
bool token_exists(const string_view &str, const string_view &sep, const string_view &token);
bool token_exists(const string_view &str, const char sep, const string_view &token) noexcept;
bool token_exists(const string_view &str, const string_view &sep, const string_view &token) noexcept;
string_view token(const string_view &str, const char sep, const size_t at);
string_view token(const string_view &str, const string_view &sep, const size_t at);
string_view token(const string_view &str, const char sep, const size_t at, const string_view &def);
string_view token(const string_view &str, const string_view &sep, const size_t at, const string_view &def);
string_view token(const string_view &str, const char sep, const size_t at, const string_view &def) noexcept;
string_view token(const string_view &str, const string_view &sep, const size_t at, const string_view &def) noexcept;
string_view token_last(const string_view &str, const char sep);
string_view token_last(const string_view &str, const string_view &sep);
@ -99,11 +99,11 @@ namespace ircd
string_view token_first(const string_view &str, const char sep);
string_view token_first(const string_view &str, const string_view &sep);
string_view tokens_after(const string_view &str, const char sep, const ssize_t at = 0);
string_view tokens_after(const string_view &str, const string_view &sep, const ssize_t at = 0);
string_view tokens_after(const string_view &str, const char sep, const ssize_t at = 0) noexcept;
string_view tokens_after(const string_view &str, const string_view &sep, const ssize_t at = 0) noexcept;
string_view tokens_before(const string_view &str, const char sep, const size_t at = 0);
string_view tokens_before(const string_view &str, const string_view &sep, const size_t at = 0);
string_view tokens_before(const string_view &str, const char sep, const size_t at = 0) noexcept;
string_view tokens_before(const string_view &str, const string_view &sep, const size_t at = 0) noexcept;
}
template<size_t N,

View File

@ -204,7 +204,7 @@ const
size_t j{i};
string_view ret;
for_each_posarg([&ret, &j]
(const string_view &token)
(const string_view &token) noexcept
{
if(j-- == 0)
{
@ -225,7 +225,7 @@ const
{
string_view ret;
for_each_pararg([&ret, &arg]
(const string_view &token)
(const string_view &token) noexcept
{
if(startswith(token, arg))
{
@ -246,7 +246,7 @@ const
{
if(prefix && startswith(arg, prefix))
return !for_each_pararg([&arg]
(const string_view &token)
(const string_view &token) noexcept
{
return !startswith(token, arg);
});
@ -259,7 +259,8 @@ ircd::util::params::count()
const
{
size_t ret{0};
for_each_posarg([&ret](const string_view &)
for_each_posarg([&ret]
(const string_view &) noexcept
{
++ret;
return true;
@ -273,7 +274,8 @@ ircd::util::params::count_pararg()
const
{
size_t ret{0};
for_each_pararg([&ret](const string_view &)
for_each_pararg([&ret]
(const string_view &) noexcept
{
++ret;
return true;

View File

@ -2486,7 +2486,8 @@ ircd::cl::wait_event_callback(work &work,
};
// Completion condition closure to be satisfied.
const auto condition{[&c, &desired]() -> bool
const auto condition{[&c, &desired]
() noexcept -> bool
{
return !c.event || c.status <= desired;
}};

View File

@ -184,7 +184,7 @@ ircd::client::wait_all()
static const auto is_empty
{
[] { return client::map.empty(); }
[]() noexcept { return client::map.empty(); }
};
while(!dock.wait_for(seconds(3), is_empty))

View File

@ -106,6 +106,7 @@ ircd::ctx::ole::offload::offload(const opts &opts,
// synchronization we need to hit the latch from this thread.
assert(context);
signal(*context, [&latch]
() noexcept
{
assert(!latch.is_ready());
latch.count_down();

View File

@ -579,7 +579,7 @@ noexcept
queue.size(),
};
dock.wait_for(seconds(5), [this]
dock.wait_for(seconds(5), [this]() noexcept
{
return queue.empty();
});
@ -640,7 +640,7 @@ size_t
ircd::db::prefetcher::cancel(column &c)
{
return cancel([&c]
(const auto &request)
(const auto &request) noexcept
{
return request.cid == id(c);
});
@ -650,7 +650,7 @@ size_t
ircd::db::prefetcher::cancel(database &d)
{
return cancel([&d]
(const auto &request)
(const auto &request) noexcept
{
return request.d == std::addressof(d);
});
@ -693,7 +693,7 @@ try
{
while(1)
{
dock.wait([this]
dock.wait([this]() noexcept
{
if(queue.empty())
return false;
@ -893,7 +893,7 @@ ircd::db::prefetcher::wait_pending()
fetched_counter + request_workers
};
dock.wait([this, &fetched_target]
dock.wait([this, &fetched_target]() noexcept
{
return this->ticker->fetched >= fetched_target;
});
@ -1415,7 +1415,7 @@ ircd::db::txn::has(const op &op,
const
{
return !for_each(*this, delta_closure_bool{[&op, &col]
(const auto &delta)
(const auto &delta) noexcept
{
return std::get<delta::OP>(delta) != op &&
std::get<delta::COL>(delta) != col;
@ -1463,7 +1463,7 @@ ircd::db::txn::has(const op &op,
const
{
return !for_each(*this, delta_closure_bool{[&op, &col, &key]
(const auto &delta)
(const auto &delta) noexcept
{
return std::get<delta::OP>(delta) != op &&
std::get<delta::COL>(delta) != col &&
@ -3009,7 +3009,7 @@ ircd::db::bytes_value(column &column,
{
size_t ret{0};
column(key, std::nothrow, gopts, [&ret]
(const string_view &value)
(const string_view &value) noexcept
{
ret = value.size();
});
@ -4057,7 +4057,7 @@ ircd::db::count(const rocksdb::Cache &cache)
{
size_t ret(0);
for_each(cache, [&ret]
(const const_buffer &)
(const const_buffer &) noexcept
{
++ret;
});

View File

@ -297,7 +297,7 @@ ircd::db::database::mergeop final
bool Merge(const rocksdb::Slice &, const rocksdb::Slice *, const rocksdb::Slice &, std::string *, rocksdb::Logger *) const noexcept override;
const char *Name() const noexcept override;
mergeop(database *const &d, merge_closure merger = nullptr);
mergeop(database *const &d, merge_closure merger = nullptr) noexcept;
~mergeop() noexcept;
};
@ -506,7 +506,7 @@ ircd::db::database::logger final
rocksdb::Status Close() noexcept override;
logger(database *const &d);
logger(database *const &d) noexcept;
~logger() noexcept override;
};

View File

@ -2144,6 +2144,7 @@ noexcept
//
ircd::db::database::logger::logger(database *const &d)
noexcept
:rocksdb::Logger{}
,d{d}
{
@ -2248,6 +2249,7 @@ noexcept
ircd::db::database::mergeop::mergeop(database *const &d,
merge_closure merger)
noexcept
:d{d}
,merger
{

View File

@ -84,7 +84,7 @@ ircd::exec::~exec()
noexcept try
{
join(SIGKILL);
dock.wait([this]
dock.wait([this]() noexcept
{
return this->pid <= 0;
});
@ -150,7 +150,7 @@ try
};
//child->wait();
dock.wait([this]
dock.wait([this]() noexcept
{
return this->pid <= 0;
});

View File

@ -648,7 +648,7 @@ ircd::fs::aio::request::queued()
const
{
return !for_each_queued([this]
(const auto &request)
(const auto &request) noexcept
{
return &request != this; // true to continue and return true
});
@ -853,7 +853,7 @@ ircd::fs::aio::system::wait()
log, "Waiting for AIO context %p", this
};
dock.wait([this]
dock.wait([this]() noexcept
{
return ecount == uint64_t(-1);
});

View File

@ -478,7 +478,7 @@ ircd::fs::iou::system::wait()
log, "Waiting for iou context %p", this
};
dock.wait([this]
dock.wait([this]() noexcept
{
return ev_count == uint64_t(-1);
});

View File

@ -914,7 +914,7 @@ ircd::gpt::samp::tokenize()
}
ircd::tokens(str, delim, [this, &count, &p, &phrases]
(const string_view &phrase) -> bool
(const string_view &phrase) noexcept -> bool
{
assert(!empty(phrase));
const vector_view<u16> buf

View File

@ -590,7 +590,7 @@ ircd::ios::dispatch::dispatch(descriptor &descriptor,
yield_t)
:dispatch
{
descriptor, defer, yield, []
descriptor, defer, yield, []() noexcept
{
}
}

View File

@ -258,7 +258,7 @@ noexcept
};
call_ready = false;
call_dock.wait([]
call_dock.wait([]() noexcept
{
return !call_mutex.locked();
});

View File

@ -172,7 +172,8 @@ size_t
ircd::mods::ldso::count()
{
size_t ret(0);
for_each([&ret](const struct link_map &)
for_each([&ret]
(const struct link_map &) noexcept
{
++ret;
return true;

View File

@ -643,7 +643,7 @@ const ircd::net::close_opts_default
/// of close(). This callback does nothing.
ircd::net::close_callback
const ircd::net::close_ignore{[]
(std::exception_ptr eptr)
(std::exception_ptr eptr) noexcept
{
return;
}};
@ -1550,7 +1550,7 @@ try
{
assert(!fini);
const auto interruption{[this]
(ctx::ctx *const &)
(ctx::ctx *const &) noexcept
{
this->cancel();
}};
@ -1742,7 +1742,7 @@ try
assert(!fini);
const auto interruption{[this]
(ctx::ctx *const &)
(ctx::ctx *const &) noexcept
{
this->cancel();
}};
@ -1781,7 +1781,7 @@ try
{
assert(!fini);
const auto interruption{[this]
(ctx::ctx *const &)
(ctx::ctx *const &) noexcept
{
this->cancel();
}};
@ -1887,7 +1887,7 @@ try
assert(!fini);
assert(!blocking(*this));
const auto interruption{[this]
(ctx::ctx *const &)
(ctx::ctx *const &) noexcept
{
this->cancel();
}};
@ -1921,7 +1921,7 @@ try
assert(!fini);
assert(!blocking(*this));
const auto interruption{[this]
(ctx::ctx *const &)
(ctx::ctx *const &) noexcept
{
this->cancel();
}};

View File

@ -15,7 +15,8 @@ bool
ircd::net::addrs::has_usable_ipv6_interface()
try
{
return !for_each([](const addr &a)
return !for_each([]
(const addr &a) noexcept
{
if(a.family != AF_INET6)
return true;

View File

@ -126,7 +126,7 @@ ircd::net::dns::resolver::~resolver()
noexcept
{
const ctx::uninterruptible::nothrow ui;
done.wait([this]
done.wait([this]() noexcept
{
if(!tags.empty())
log::warning
@ -231,7 +231,7 @@ ircd::net::dns::resolver::sendq_worker()
{
while(1)
{
dock.wait([this]
dock.wait([this]() noexcept
{
assert(sendq.empty() || !tags.empty());
return !sendq.empty() && !server.empty();
@ -289,7 +289,7 @@ ircd::net::dns::resolver::timeout_worker()
// Dock here until somebody submits a request into the tag map. Also
// wait until recv_idle is asserted which indicates the UDP queue has
// been exhausted.
dock.wait([this]
dock.wait([this]() noexcept
{
return !tags.empty() && recv_idle;
});

View File

@ -439,7 +439,7 @@ noexcept try
if(!ctx::current)
return;
joining.wait([this]
joining.wait([this]() noexcept
{
return !accepting && handshaking.empty();
});

View File

@ -153,7 +153,7 @@ ircd::net::acceptor_udp::join()
noexcept try
{
interrupt();
joining.wait([this]
joining.wait([this]() noexcept
{
return waiting == 0;
});
@ -194,7 +194,7 @@ ircd::net::acceptor_udp::operator()(datagram &datagram)
};
const auto interruption{[this]
(ctx::ctx *const &)
(ctx::ctx *const &) noexcept
{
this->interrupt();
}};

View File

@ -256,7 +256,8 @@ const
char allow_methods_buf[48];
const string_view &allow_methods
{
method_list(allow_methods_buf, [&](const method &method)
method_list(allow_methods_buf, [&]
(const method &method) noexcept
{
return true;
})
@ -281,7 +282,7 @@ ircd::resource::method_list(const mutable_buffer &buf)
const
{
return method_list(buf, []
(const method &)
(const method &) noexcept
{
return true;
});
@ -474,7 +475,7 @@ noexcept
};
const ctx::uninterruptible::nothrow ui;
idle_dock.wait([this]
idle_dock.wait([this]() noexcept
{
return !stats || stats->pending == 0;
});

View File

@ -637,7 +637,8 @@ try
return {};
parse::buffer pb{request.in.head};
parse::capstan pc{pb, [](char *&read, char *stop)
parse::capstan pc{pb, []
(char *&read, char *stop) noexcept
{
read = stop;
}};
@ -670,7 +671,8 @@ try
return {};
parse::buffer pb{request.out.head};
parse::capstan pc{pb, [](char *&read, char *stop)
parse::capstan pc{pb, []
(char *&read, char *stop) noexcept
{
read = stop;
}};
@ -759,7 +761,8 @@ ircd::server::peer::only_ipv6
{
{ "name", "ircd.server.peer.ipv6.only" },
{ "default", net::sock_opts::IGN },
}, []
},
[]() noexcept
{
sock_opts.v6only = ssize_t(only_ipv6);
}
@ -771,7 +774,8 @@ ircd::server::peer::sock_nodelay
{
{ "name", "ircd.server.peer.sock.nodelay" },
{ "default", true },
}, []
},
[]() noexcept
{
sock_opts.nodelay = ssize_t(sock_nodelay);
}
@ -783,7 +787,8 @@ ircd::server::peer::sock_read_bufsz
{
{ "name", "ircd.server.peer.sock.read.bufsz" },
{ "default", net::sock_opts::IGN },
}, []
},
[]() noexcept
{
sock_opts.read_bufsz = ssize_t(sock_read_bufsz);
}
@ -795,7 +800,8 @@ ircd::server::peer::sock_read_lowat
{
{ "name", "ircd.server.peer.sock.read.lowat" },
{ "default", net::sock_opts::IGN },
}, []
},
[]() noexcept
{
sock_opts.read_lowat = ssize_t(sock_read_lowat);
}
@ -807,7 +813,8 @@ ircd::server::peer::sock_write_bufsz
{
{ "name", "ircd.server.peer.sock.write.bufsz" },
{ "default", net::sock_opts::IGN },
}, []
},
[]() noexcept
{
sock_opts.write_bufsz = ssize_t(sock_write_bufsz);
}
@ -819,7 +826,8 @@ ircd::server::peer::sock_write_lowat
{
{ "name", "ircd.server.peer.sock.write.lowat" },
{ "default", net::sock_opts::IGN },
}, []
},
[]() noexcept
{
sock_opts.write_lowat = ssize_t(sock_write_lowat);
}

View File

@ -52,6 +52,7 @@ ircd::string_view
ircd::tokens_before(const string_view &str,
const char sep,
const size_t i)
noexcept
{
assert(sep != '\0');
const char _sep[2]
@ -66,6 +67,7 @@ ircd::string_view
ircd::tokens_before(const string_view &str,
const string_view &sep,
const size_t i)
noexcept
{
using type = string_view;
using iter = typename type::const_iterator;
@ -92,6 +94,7 @@ ircd::string_view
ircd::tokens_after(const string_view &str,
const char sep,
const ssize_t i)
noexcept
{
assert(sep != '\0');
const char _sep[2]
@ -106,6 +109,7 @@ ircd::string_view
ircd::tokens_after(const string_view &str,
const string_view &sep,
const ssize_t i)
noexcept
{
using type = string_view;
using iter = typename type::const_iterator;
@ -191,7 +195,7 @@ ircd::token(const string_view &str,
const char sep,
const size_t i,
const string_view &def)
try
noexcept try
{
return token(str, sep, i);
}
@ -205,7 +209,7 @@ ircd::token(const string_view &str,
const string_view &sep,
const size_t i,
const string_view &def)
try
noexcept try
{
return token(str, sep, i);
}
@ -254,6 +258,7 @@ bool
ircd::token_exists(const string_view &str,
const char sep,
const string_view &tok)
noexcept
{
using type = string_view;
using iter = typename type::const_iterator;
@ -272,6 +277,7 @@ bool
ircd::token_exists(const string_view &str,
const string_view &sep,
const string_view &tok)
noexcept
{
using type = string_view;
using iter = typename type::const_iterator;
@ -289,6 +295,7 @@ ircd::token_exists(const string_view &str,
size_t
ircd::token_count(const string_view &str,
const char sep)
noexcept
{
using type = string_view;
using iter = typename type::const_iterator;
@ -306,6 +313,7 @@ ircd::token_count(const string_view &str,
size_t
ircd::token_count(const string_view &str,
const string_view &sep)
noexcept
{
using type = string_view;
using iter = typename type::const_iterator;
@ -325,6 +333,7 @@ ircd::tokens(const string_view &str,
const char sep_,
const mutable_buffer &buf,
const token_view &closure)
noexcept
{
assert(sep_ != '\0');
const char _sep[2]
@ -345,6 +354,7 @@ ircd::tokens(const string_view &str,
const string_view &sep,
const mutable_buffer &buf,
const token_view &closure)
noexcept
{
char *ptr(data(buf));
char *const stop(data(buf) + size(buf));
@ -369,6 +379,7 @@ ircd::tokens(const string_view &str,
const char sep,
const size_t limit,
const token_view &closure)
noexcept
{
using type = string_view;
using iter = typename type::const_iterator;
@ -393,6 +404,7 @@ ircd::tokens(const string_view &str,
const string_view &sep,
const size_t limit,
const token_view &closure)
noexcept
{
using type = string_view;
using iter = typename type::const_iterator;
@ -416,6 +428,7 @@ bool
ircd::tokens(const string_view &str,
const char sep,
const token_view &closure)
noexcept
{
using type = string_view;
using iter = typename type::const_iterator;
@ -438,6 +451,7 @@ bool
ircd::tokens(const string_view &str,
const string_view &sep,
const token_view &closure)
noexcept
{
using type = string_view;
using iter = typename type::const_iterator;

View File

@ -81,12 +81,12 @@ const ircd::db::prefix_transform
ircd::m::dbs::desc::event_refs__pfx
{
"_event_refs",
[](const string_view &key)
[](const string_view &key) noexcept
{
return size(key) >= sizeof(event::idx) * 2;
},
[](const string_view &key)
[](const string_view &key) noexcept
{
assert(size(key) >= sizeof(event::idx));
return string_view

View File

@ -83,7 +83,7 @@ const
{
size_t ret(0);
for_each([&ret]
(const auto &, const auto &)
(const auto &, const auto &) noexcept
{
++ret;
return true;
@ -97,7 +97,7 @@ ircd::m::event::horizon::has(const event::idx &event_idx)
const
{
return !for_each([&event_idx]
(const auto &, const auto &_event_idx)
(const auto &, const auto &_event_idx) noexcept
{
// false to break; true to continue.
return _event_idx == event_idx? false : true;

View File

@ -117,7 +117,7 @@ ircd::m::fed::well_known::worker_context
decltype(ircd::m::fed::well_known::handle_quit)
ircd::m::fed::well_known::handle_quit
{
run::level::QUIT, []
run::level::QUIT, []() noexcept
{
worker_dock.notify_all();
}
@ -316,7 +316,7 @@ try
run::barrier<ctx::interrupted>{};
while(!request::list.empty() || run::level == run::level::RUN)
{
worker_dock.wait([]
worker_dock.wait([]() noexcept
{
return !request::list.empty() || run::level != run::level::RUN;
});

View File

@ -88,7 +88,7 @@ bool
ircd::m::myself(const m::user::id &user_id)
{
return !for_each([&user_id]
(const auto &homeserver)
(const auto &homeserver) noexcept
{
return homeserver.self != user_id;
});
@ -581,7 +581,8 @@ const
bool dup{false}, exists{false};
if(!force)
get(key, [&exists, &dup, &val](const string_view &val_)
get(key, [&exists, &dup, &val]
(const string_view &val_) noexcept
{
exists = true;
dup = val == val_;

View File

@ -290,7 +290,7 @@ try
// All rooms have been submitted to the pool but the pool workers might
// still be busy. If we unwind now the pool's dtor will kill the workers
// so we synchronize their completion here.
dock.wait([]
dock.wait([]() noexcept
{
return complete >= count;
});

View File

@ -157,7 +157,7 @@ ircd::m::node::mitsein::has(const m::node &other,
const
{
return !for_each(other, membership, []
(const auto &, const auto &)
(const auto &, const auto &) noexcept
{
return false;
});
@ -170,7 +170,7 @@ const
{
size_t ret(0);
for_each(other, membership, [&ret]
(const auto &, const auto &)
(const auto &, const auto &) noexcept
{
++ret;
return true;

View File

@ -791,7 +791,7 @@ ircd::m::contains(const id::room &room_id,
const event::idx &event_idx)
{
return m::query(event_idx, "room_id", [&room_id]
(const string_view &_room_id) -> bool
(const string_view &_room_id) noexcept -> bool
{
return _room_id == room_id;
});
@ -1088,7 +1088,7 @@ const
{
size_t ret(0);
for_each(event::closure_idx_bool{[&ret]
(const event::idx &event_idx)
(const event::idx &event_idx) noexcept
{
++ret;
return true;
@ -1103,7 +1103,7 @@ const
{
size_t ret(0);
for_each(type, event::closure_idx_bool{[&ret]
(const event::idx &event_idx)
(const event::idx &event_idx) noexcept
{
++ret;
return true;
@ -1122,7 +1122,7 @@ const
(const event::idx &event_idx)
{
ret += query(std::nothrow, event_idx, "state_key", [&state_key]
(const string_view &_state_key) -> bool
(const string_view &_state_key) noexcept -> bool
{
return state_key == _state_key;
});
@ -1201,7 +1201,7 @@ const
{
event::idx ret{0};
for_each(type, event::closure_idx_bool{[&ret]
(const event::idx &event_idx)
(const event::idx &event_idx) noexcept
{
ret = event_idx;
return false;

View File

@ -105,7 +105,7 @@ try
{
for(;; ctx::sleep(milliseconds(timeout_int)))
{
dock.wait([]
dock.wait([]() noexcept
{
return !typists.empty();
});

View File

@ -45,7 +45,7 @@ const
const auto match
{
[this](const string_view &sender)
[this](const string_view &sender) noexcept
{
return sender == this->user.user_id;
}
@ -90,7 +90,7 @@ const
};
return event_idx && m::query(std::nothrow, event_idx, "sender", [this]
(const string_view &sender)
(const string_view &sender) noexcept
{
return sender == this->user.user_id;
});
@ -120,7 +120,7 @@ const
{
const auto match
{
[this](const string_view &sender)
[this](const string_view &sender) noexcept
{
return sender == this->user.user_id;
}

View File

@ -66,7 +66,7 @@ noexcept
sequence::pending,
};
vm::dock.wait([]
vm::dock.wait([]() noexcept
{
return !eval::executing && !eval::injecting;
});
@ -81,7 +81,7 @@ noexcept
sequence::uncommitted,
};
sequence::dock.wait([]
sequence::dock.wait([]() noexcept
{
return !sequence::pending;
});

View File

@ -153,7 +153,7 @@ noexcept
{
eval *ret {nullptr};
eval::for_each(&c, [&ret, &a]
(eval &eval)
(eval &eval) noexcept
{
const bool cond
{
@ -377,7 +377,8 @@ ircd::m::vm::eval *
ircd::m::vm::eval::find(const event::id &event_id)
{
eval *ret{nullptr};
for_each([&event_id, &ret](eval &e)
for_each([&event_id, &ret]
(eval &e) noexcept
{
if(e.event_)
if(e.event_->event_id == event_id)
@ -393,7 +394,8 @@ size_t
ircd::m::vm::eval::count(const event::id &event_id)
{
size_t ret(0);
for_each([&event_id, &ret](eval &e)
for_each([&event_id, &ret]
(eval &e) noexcept
{
if(e.event_)
if(e.event_->event_id == event_id)
@ -410,7 +412,7 @@ ircd::m::vm::eval::find_pdu(const event::id &event_id)
{
const m::event *ret{nullptr};
for_each_pdu([&ret, &event_id]
(const m::event &event)
(const m::event &event) noexcept
{
if(event.event_id != event_id)
return true;

View File

@ -250,7 +250,7 @@ ircd::m::vm::inject(eval &eval,
{
event, opts.prop_mask.has("depth") && !event.has("depth"),
{
"depth", [&depth]
"depth", [&depth]() noexcept
{
// When the depth value is undefined_number it was intended
// that no depth should appear in the event JSON so that value

View File

@ -194,7 +194,7 @@ get__events(client &client,
)
};
dock.wait_for(timeout, [&event, &eid]
dock.wait_for(timeout, [&event, &eid]() noexcept
{
return !empty(event) && !empty(eid);
});

View File

@ -104,7 +104,7 @@ put__profile(client &client,
bool modified{true};
profile.get(std::nothrow, param, [&value, &modified]
(const string_view &param, const string_view &existing)
(const string_view &param, const string_view &existing) noexcept
{
modified = existing != value;
});
@ -202,7 +202,7 @@ get__profile(client &client,
const bool empty
{
profile.for_each([]
(const string_view &, const string_view &)
(const string_view &, const string_view &) noexcept
{
return false;
})

View File

@ -279,7 +279,7 @@ check_transaction_id(const m::user::id &user_id,
{
static const auto type_match
{
[](const string_view &type)
[](const string_view &type) noexcept
{
return type == "ircd.client.txnid";
}

View File

@ -43,7 +43,9 @@ namespace ircd::m::sync::longpoll
ircd::mapi::header
IRCD_MODULE
{
"Client 6.2.1 :Sync", nullptr, []
"Client 6.2.1 :Sync",
nullptr,
[]() noexcept
{
ircd::m::sync::longpoll::fini();
}
@ -635,7 +637,7 @@ catch(const std::exception &e)
int
ircd::m::sync::longpoll::poll(data &data)
{
const auto ready{[&data]
const auto ready{[&data]() noexcept
{
assert(data.range.second <= m::vm::sequence::retired + 1);
return data.range.second <= m::vm::sequence::retired;

View File

@ -574,7 +574,7 @@ console_cmd__restart(opt &out, const string_view &line)
size_t swargs(0), posargs(0);
ircd::tokens(line, ' ', [&swargs, &posargs]
(const auto &token)
(const string_view &token)
{
swargs += startswith(token, '-');
posargs += !startswith(token, '-');
@ -1871,6 +1871,7 @@ console_cmd__ios__depth(opt &out, const string_view &line)
{
started = ios::epoch();
ios::dispatch(dispatch_desc, ios::yield, [&executed]
() noexcept
{
executed = ios::epoch();
});
@ -1888,6 +1889,7 @@ console_cmd__ios__depth(opt &out, const string_view &line)
{
started = ios::epoch();
ios::dispatch(post_desc, ios::defer, ios::yield, [&executed]
() noexcept
{
executed = ios::epoch();
});
@ -1905,6 +1907,7 @@ console_cmd__ios__depth(opt &out, const string_view &line)
{
started = ios::epoch();
ios::dispatch(defer_desc, ios::defer, ios::yield, [&executed]
() noexcept
{
executed = ios::epoch();
});
@ -1980,6 +1983,7 @@ console_cmd__ios__latency(opt &out, const string_view &line)
asm volatile ("lfence");
ios::dispatch(dispatch_desc, ios::yield, [&executed]
() noexcept
{
__sync_synchronize();
asm volatile ("lfence");
@ -2010,6 +2014,7 @@ console_cmd__ios__latency(opt &out, const string_view &line)
asm volatile ("lfence");
ios::dispatch(post_desc, ios::defer, ios::yield, [&executed]
() noexcept
{
__sync_synchronize();
asm volatile ("lfence");
@ -2040,6 +2045,7 @@ console_cmd__ios__latency(opt &out, const string_view &line)
asm volatile ("lfence");
ios::dispatch(defer_desc, ios::defer, ios::yield, [&executed]
() noexcept
{
__sync_synchronize();
asm volatile ("lfence");
@ -4776,7 +4782,7 @@ console_cmd__db__sst__scan__count(opt &out, const string_view &line)
db::database::sst::scan
{
database, path, [&out, &i]
(const auto &key, const auto &val)
(const auto &key, const auto &val) noexcept
{
++i;
return true;
@ -6359,7 +6365,7 @@ console_cmd__net__host(opt &out, const string_view &line)
net::dns::resolve(hostport, opts, cbarr);
const ctx::uninterruptible ui;
dock.wait([&done]
dock.wait([&done]() noexcept
{
return done;
});
@ -7787,7 +7793,7 @@ console_cmd__events__type__counts(opt &out, const string_view &line)
{
size_t i(0);
m::events::type::for_each_in(type, [&i]
(const string_view &type, const m::event::idx &event_idx)
(const string_view &type, const m::event::idx &event_idx) noexcept
{
++i;
return true;
@ -10052,7 +10058,7 @@ console_cmd__room__members__origin(opt &out, const string_view &line)
const bool same_origin
{
m::query(std::nothrow, event_idx, "origin", [&origin]
(const auto &_origin)
(const auto &_origin) noexcept
{
return _origin == origin;
})
@ -11572,6 +11578,7 @@ console_cmd__room__type__count(opt &out, const string_view &line)
size_t ret(0);
events.for_each([&ret]
(const string_view &type, const uint64_t &depth, const m::event::idx &event_idx)
noexcept
{
++ret;
return true;
@ -12940,7 +12947,8 @@ console_cmd__user__read__count(opt &out, const string_view &line)
size_t count {0};
space.for_each("ircd.read", room_id, [&out, &count]
(const auto &type, const auto &state_key, const auto &depth, const auto &event_idx) -> bool
(const auto &type, const auto &state_key, const auto &depth, const auto &event_idx)
noexcept -> bool
{
++count;
return true;

View File

@ -101,7 +101,7 @@ get__make_join(client &client,
const bool version_mismatch
{
request.query.for_each("ver", [&room_version]
(const auto &val)
(const auto &val) noexcept
{
return val.second != room_version;
})

View File

@ -224,7 +224,7 @@ handle_put(client &client,
size_t evals{0};
bool txn_in_progress{false};
m::vm::eval::for_each([&txn_id, &request, &evals, &txn_in_progress]
(const auto &eval)
(const auto &eval) noexcept
{
assert(eval.opts);
const bool match_node

View File

@ -180,7 +180,7 @@ send_worker()
{
while(1) try
{
notified_dock.wait([]
notified_dock.wait([]() noexcept
{
return !notified_queue.empty();
});
@ -503,7 +503,7 @@ recv_worker()
{
while(1)
{
recv_action.wait([]
recv_action.wait([]() noexcept
{
return !txns.empty();
});

View File

@ -84,7 +84,7 @@ post__user_keys_claim(client &client,
const json::string &algorithm{algorithm_};
const json::string &device_id{device_id_};
const auto match{[&device_id]
(const string_view &state_key)
(const string_view &state_key) noexcept
{
return state_key == device_id;
}};

View File

@ -211,7 +211,7 @@ try
auto since {vm::sequence::retired}; do
{
worker_dock.wait([&since]
worker_dock.wait([&since]() noexcept
{
return since < vm::sequence::retired;
});

View File

@ -566,7 +566,7 @@ command__read(const mutable_buffer &buf,
// return true if the expression is not matched for this room.
const auto without_match{[&match]
(const string_view &key, const json::object &object)
(const string_view &key, const json::object &object) noexcept
{
return !match(key);
}};

View File

@ -241,12 +241,12 @@ _listener_allow
{
while(1)
{
client::dock.wait([]
client::dock.wait([]() noexcept
{
return !client::pool.avail();
});
client::dock.wait([]
client::dock.wait([]() noexcept
{
if(!client::pool.avail())
return false;

View File

@ -65,7 +65,7 @@ ircd::net::dns::cache::fini()
waiting.size(),
};
dock.wait([]
dock.wait([]() noexcept
{
return waiting.empty();
});

View File

@ -1419,7 +1419,7 @@ github_handle__status(std::ostream &out,
static const auto type_match
{
[](const string_view &type)
[](const string_view &type) noexcept
{
return type == "m.room.message";
}
@ -1427,7 +1427,7 @@ github_handle__status(std::ostream &out,
const auto user_match
{
[&_webhook_user](const string_view &sender)
[&_webhook_user](const string_view &sender) noexcept
{
return sender && sender == _webhook_user;
}