0
0
Fork 0
mirror of https://github.com/matrix-construct/construct synced 2024-06-02 10:08:56 +02:00

ircd:Ⓜ️:event: Addl prev utils; simplify before().

This commit is contained in:
Jason Volk 2018-08-25 23:28:23 -07:00
parent 02d1cd1115
commit 48a436fcc1
2 changed files with 64 additions and 18 deletions

View file

@ -177,6 +177,14 @@ struct ircd::m::event::prev
event::id prev_state(const uint &idx) const;
event::id prev_event(const uint &idx) const;
size_t auth_events_count() const;
size_t prev_states_count() const;
size_t prev_events_count() const;
bool auth_events_has(const event::id &) const;
bool prev_states_has(const event::id &) const;
bool prev_events_has(const event::id &) const;
using super_type::tuple;
using super_type::operator=;
};

View file

@ -258,24 +258,8 @@ bool
ircd::m::before(const event &a,
const event &b)
{
const event::prev prev_b{b};
const json::array &prev_b_events
{
json::get<"prev_events"_>(prev_b)
};
for(const json::array &prev_event : prev_b_events)
{
const event::id prev_event_id
{
unquote(prev_event.at(0))
};
if(prev_event_id == at<"event_id"_>(a))
return true;
}
return false;
const event::prev prev{b};
return prev.prev_events_has(at<"event_id"_>(a));
}
bool
@ -1257,6 +1241,60 @@ ircd::m::essential(m::event event,
// event::prev
//
bool
ircd::m::event::prev::prev_events_has(const event::id &event_id)
const
{
for(const json::array &p : json::get<"prev_events"_>(*this))
if(unquote(p.at(0)) == event_id)
return true;
return false;
}
bool
ircd::m::event::prev::prev_states_has(const event::id &event_id)
const
{
for(const json::array &p : json::get<"prev_state"_>(*this))
if(unquote(p.at(0)) == event_id)
return true;
return false;
}
bool
ircd::m::event::prev::auth_events_has(const event::id &event_id)
const
{
for(const json::array &p : json::get<"auth_events"_>(*this))
if(unquote(p.at(0)) == event_id)
return true;
return false;
}
size_t
ircd::m::event::prev::prev_events_count()
const
{
return json::get<"prev_events"_>(*this).count();
}
size_t
ircd::m::event::prev::prev_states_count()
const
{
return json::get<"prev_state"_>(*this).count();
}
size_t
ircd::m::event::prev::auth_events_count()
const
{
return json::get<"auth_events"_>(*this).count();
}
ircd::m::event::id
ircd::m::event::prev::auth_event(const uint &idx)
const