mirror of
https://github.com/matrix-construct/construct
synced 2024-12-26 15:33:54 +01:00
ircd:Ⓜ️:rooms: Add public rooms count for total_room_count_estimate; cleanup.
This commit is contained in:
parent
f7c7850465
commit
e85917abb1
4 changed files with 32 additions and 20 deletions
|
@ -33,6 +33,8 @@ namespace ircd::m::rooms
|
|||
bool for_each_public(const string_view &room_id_lb, const room::id::closure_bool &);
|
||||
bool for_each_public(const room::id::closure_bool &);
|
||||
|
||||
size_t count_public(const string_view &server = {});
|
||||
|
||||
// Linkage to utils that build a publicrooms summary from room state.
|
||||
void summary_chunk(const m::room &, json::stack::object &chunk);
|
||||
json::object summary_chunk(const m::room &, const mutable_buffer &out);
|
||||
|
|
13
ircd/m/m.cc
13
ircd/m/m.cc
|
@ -1532,6 +1532,19 @@ ircd::m::rooms::for_each(const user &user,
|
|||
return rooms.for_each(membership, closure);
|
||||
}
|
||||
|
||||
size_t
|
||||
ircd::m::rooms::count_public(const string_view &server)
|
||||
{
|
||||
using prototype = size_t (const string_view &);
|
||||
|
||||
static mods::import<prototype> function
|
||||
{
|
||||
"m_rooms", "_count_public"
|
||||
};
|
||||
|
||||
return function(server);
|
||||
}
|
||||
|
||||
bool
|
||||
ircd::m::rooms::for_each_public(const room::id::closure_bool &closure)
|
||||
{
|
||||
|
|
|
@ -16,17 +16,6 @@ IRCD_MODULE
|
|||
"Client 7.5 :Public Rooms"
|
||||
};
|
||||
|
||||
const ircd::m::room::id::buf
|
||||
public_room_id
|
||||
{
|
||||
"public", ircd::my_host()
|
||||
};
|
||||
|
||||
m::room public_
|
||||
{
|
||||
public_room_id
|
||||
};
|
||||
|
||||
resource
|
||||
publicrooms_resource
|
||||
{
|
||||
|
@ -105,11 +94,6 @@ post__publicrooms(client &client,
|
|||
size_t count{0};
|
||||
m::room::id::buf prev_batch_buf;
|
||||
m::room::id::buf next_batch_buf;
|
||||
const m::room::state publix
|
||||
{
|
||||
public_
|
||||
};
|
||||
|
||||
json::stack::object top{out};
|
||||
{
|
||||
json::stack::member chunk_m{top, "chunk"};
|
||||
|
@ -132,7 +116,7 @@ post__publicrooms(client &client,
|
|||
{
|
||||
top, "total_room_count_estimate", json::value
|
||||
{
|
||||
long(publix.count("ircd.room"))
|
||||
ssize_t(m::rooms::count_public())
|
||||
}
|
||||
};
|
||||
|
||||
|
@ -148,7 +132,7 @@ post__publicrooms(client &client,
|
|||
top, "next_batch", next_batch_buf
|
||||
};
|
||||
|
||||
return {};
|
||||
return response;
|
||||
}
|
||||
|
||||
resource::method
|
||||
|
|
|
@ -11,12 +11,13 @@
|
|||
namespace ircd::m::rooms
|
||||
{
|
||||
extern "C" void _summary_chunk(const m::room &room, json::stack::object &obj);
|
||||
extern "C" size_t _count_public(const string_view &server);
|
||||
extern "C" bool _for_each_public(const string_view &room_id_lb, const room::id::closure_bool &);
|
||||
extern "C" bool _for_each(const string_view &room_id_lb, const room::id::closure_bool &);
|
||||
static void create_public_room(const m::event &, m::vm::eval &);
|
||||
|
||||
extern const ircd::m::room::id::buf public_room_id;
|
||||
extern m::hookfn<m::vm::eval &> create_public_room_hook;
|
||||
extern const room::id::buf public_room_id;
|
||||
extern m::hookfn<vm::eval &> create_public_room_hook;
|
||||
}
|
||||
|
||||
ircd::mapi::header
|
||||
|
@ -70,6 +71,18 @@ ircd::m::rooms::_for_each(const string_view &room_id_lb,
|
|||
return state.for_each("ircd.room", room_id_lb, keys);
|
||||
}
|
||||
|
||||
size_t
|
||||
ircd::m::rooms::_count_public(const string_view &server)
|
||||
{
|
||||
const room::state state
|
||||
{
|
||||
public_room_id
|
||||
};
|
||||
|
||||
//TODO: server
|
||||
return state.count("ircd.room");
|
||||
}
|
||||
|
||||
bool
|
||||
ircd::m::rooms::_for_each_public(const string_view &room_id_lb,
|
||||
const room::id::closure_bool &closure)
|
||||
|
|
Loading…
Reference in a new issue