mirror of
https://github.com/matrix-construct/construct
synced 2024-09-27 11:18:51 +02:00
ircd:Ⓜ️ Add branch and overload for event::id in room_id() suite.
This commit is contained in:
parent
bd1b060314
commit
ac572aeeaa
2 changed files with 38 additions and 11 deletions
|
@ -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
|
||||
|
|
|
@ -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)
|
||||
|
|
Loading…
Reference in a new issue