0
0
Fork 0
mirror of https://github.com/matrix-construct/construct synced 2024-05-23 21:33:44 +02:00

ircd:Ⓜ️ Add branch and overload for event::id in room_id() suite.

This commit is contained in:
Jason Volk 2019-09-09 19:25:41 -07:00
parent bd1b060314
commit ac572aeeaa
2 changed files with 38 additions and 11 deletions

View file

@ -49,9 +49,11 @@ namespace ircd::m
string_view display_name(const mutable_buffer &out, const room &);
id::user::buf any_user(const room &, const string_view &host, const string_view &memshp = "join");
id::room room_id(const mutable_buffer &, const id::room_alias &);
id::room room_id(const mutable_buffer &, const string_view &id_or_alias);
id::room::buf room_id(const id::room_alias &);
id::room room_id(const mutable_buffer &, const id::event &); // db
id::room room_id(const mutable_buffer &, const id::room_alias &); // db + net
id::room room_id(const mutable_buffer &, const string_view &mxid);
id::room::buf room_id(const id::event &); // db
id::room::buf room_id(const id::room_alias &); // db + net
id::room::buf room_id(const string_view &id_or_alias);
// [SET] Lowest-level

View file

@ -640,39 +640,64 @@ ircd::m::room_id(const id::room_alias &room_alias)
}
ircd::m::id::room::buf
ircd::m::room_id(const string_view &room_id_or_alias)
ircd::m::room_id(const id::event &event_id)
{
char buf[m::id::MAX_SIZE + 1];
static_assert(sizeof(buf) <= 256);
return room_id(buf, room_id_or_alias);
return room_id(buf, event_id);
}
ircd::m::id::room::buf
ircd::m::room_id(const string_view &mxid)
{
char buf[m::id::MAX_SIZE + 1];
static_assert(sizeof(buf) <= 256);
return room_id(buf, mxid);
}
ircd::m::id::room
ircd::m::room_id(const mutable_buffer &out,
const string_view &room_id_or_alias)
const string_view &mxid)
{
switch(m::sigil(room_id_or_alias))
switch(m::sigil(mxid))
{
case id::ROOM:
return id::room{out, room_id_or_alias};
return id::room{out, mxid};
case id::USER:
{
const m::user::room user_room(room_id_or_alias);
const m::user::room user_room(mxid);
return string_view{data(out), copy(out, user_room.room_id)};
}
case id::NODE:
{
const m::node node(lstrip(room_id_or_alias, ':'));
const m::node node(lstrip(mxid, ':'));
return node.room_id(out);
}
case id::EVENT:
return room_id(out, id::event{mxid});
default:
return room_id(out, id::room_alias{room_id_or_alias});
return room_id(out, id::room_alias{mxid});
}
}
ircd::m::id::room
ircd::m::room_id(const mutable_buffer &out,
const id::event &event_id)
{
room::id ret;
m::get(event_id, "room_id", [&out, &ret]
(const room::id &room_id)
{
ret = string_view { data(out), copy(out, room_id) };
});
return ret;
}
ircd::m::id::room
ircd::m::room_id(const mutable_buffer &out,
const id::room_alias &room_alias)