0
0
Fork 0
mirror of https://github.com/matrix-construct/construct synced 2024-06-16 17:08:20 +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 &); 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::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 id::event &); // db
id::room room_id(const mutable_buffer &, const string_view &id_or_alias); id::room room_id(const mutable_buffer &, const id::room_alias &); // db + net
id::room::buf room_id(const id::room_alias &); 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); id::room::buf room_id(const string_view &id_or_alias);
// [SET] Lowest-level // [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::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]; char buf[m::id::MAX_SIZE + 1];
static_assert(sizeof(buf) <= 256); 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::id::room
ircd::m::room_id(const mutable_buffer &out, 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: case id::ROOM:
return id::room{out, room_id_or_alias}; return id::room{out, mxid};
case id::USER: 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)}; return string_view{data(out), copy(out, user_room.room_id)};
} }
case id::NODE: case id::NODE:
{ {
const m::node node(lstrip(room_id_or_alias, ':')); const m::node node(lstrip(mxid, ':'));
return node.room_id(out); return node.room_id(out);
} }
case id::EVENT:
return room_id(out, id::event{mxid});
default: 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::id::room
ircd::m::room_id(const mutable_buffer &out, ircd::m::room_id(const mutable_buffer &out,
const id::room_alias &room_alias) const id::room_alias &room_alias)