mirror of
https://github.com/matrix-construct/construct
synced 2024-12-26 15:33:54 +01:00
ircd:Ⓜ️:user::mitsein: Replace string w/ hash for seen state.
This commit is contained in:
parent
30d7c11db7
commit
ff0a6c2ce7
1 changed files with 13 additions and 14 deletions
|
@ -71,16 +71,11 @@ const
|
||||||
// here we gooooooo :/
|
// here we gooooooo :/
|
||||||
///TODO: ideal: db schema
|
///TODO: ideal: db schema
|
||||||
///TODO: minimally: custom alloc?
|
///TODO: minimally: custom alloc?
|
||||||
std::set<std::string, std::less<>> seen;
|
std::set<uint128_t, std::less<>> seen;
|
||||||
return rooms.for_each(membership, rooms::closure_bool{[&membership, &closure, &seen]
|
return rooms.for_each(membership, rooms::closure_bool{[&membership, &closure, &seen]
|
||||||
(m::room room, const string_view &)
|
(const m::room &room, const string_view &_membership)
|
||||||
{
|
{
|
||||||
static const event::fetch::opts fopts
|
assert(_membership == membership);
|
||||||
{
|
|
||||||
event::keys::include {"state_key"}
|
|
||||||
};
|
|
||||||
|
|
||||||
room.fopts = &fopts;
|
|
||||||
const m::room::members members
|
const m::room::members members
|
||||||
{
|
{
|
||||||
room
|
room
|
||||||
|
@ -89,16 +84,20 @@ const
|
||||||
return members.for_each(membership, [&seen, &closure]
|
return members.for_each(membership, [&seen, &closure]
|
||||||
(const user::id &other)
|
(const user::id &other)
|
||||||
{
|
{
|
||||||
const auto it
|
const auto hash
|
||||||
{
|
{
|
||||||
seen.lower_bound(other)
|
uint128_t(ircd::hash(other))
|
||||||
|
| (uint128_t(ircd::hash(other.host())) << 64)
|
||||||
};
|
};
|
||||||
|
|
||||||
if(it != end(seen) && *it == other)
|
const bool inserted
|
||||||
return true;
|
{
|
||||||
|
seen.emplace(hash).second
|
||||||
|
};
|
||||||
|
|
||||||
seen.emplace_hint(it, std::string{other});
|
return inserted?
|
||||||
return closure(m::user{other});
|
closure(m::user{other}):
|
||||||
|
true;
|
||||||
});
|
});
|
||||||
}});
|
}});
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue