diff --git a/include/ircd/m/dbs.h b/include/ircd/m/dbs.h index 597bfd1a8..bc83f2717 100644 --- a/include/ircd/m/dbs.h +++ b/include/ircd/m/dbs.h @@ -33,14 +33,17 @@ namespace ircd::m::dbs extern db::column state_node; // Lowlevel util + static const size_t ROOM_STATE_KEY_MAX_SIZE {id::MAX_SIZE + 256 + 256}; string_view room_state_key(const mutable_buffer &out, const id::room &, const string_view &type, const string_view &state_key); string_view room_state_key(const mutable_buffer &out, const id::room &, const string_view &type); std::pair room_state_key(const string_view &amalgam); + static const size_t ROOM_JOINED_KEY_MAX_SIZE {id::MAX_SIZE + 256 + id::MAX_SIZE}; string_view room_joined_key(const mutable_buffer &out, const id::room &, const string_view &origin, const id::user &member); string_view room_joined_key(const mutable_buffer &out, const id::room &, const string_view &origin); std::pair room_joined_key(const string_view &amalgam); + static const size_t ROOM_EVENTS_KEY_MAX_SIZE {id::MAX_SIZE + 1 + 8 + 8}; string_view room_events_key(const mutable_buffer &out, const id::room &, const uint64_t &depth, const event::idx &); string_view room_events_key(const mutable_buffer &out, const id::room &, const uint64_t &depth); std::pair room_events_key(const string_view &amalgam); diff --git a/ircd/m/dbs.cc b/ircd/m/dbs.cc index 9766bdc9e..676f19ade 100644 --- a/ircd/m/dbs.cc +++ b/ircd/m/dbs.cc @@ -243,7 +243,7 @@ ircd::m::dbs::_index__room_events(db::txn &txn, const string_view &new_root) { const ctx::critical_assertion ca; - thread_local char buf[256 + 1 + 8 + 8]; + thread_local char buf[ROOM_EVENTS_KEY_MAX_SIZE]; const string_view &key { room_events_key(buf, at<"room_id"_>(event), at<"depth"_>(event), opts.idx) @@ -274,7 +274,7 @@ ircd::m::dbs::_index__room_joined(db::txn &txn, return; const ctx::critical_assertion ca; - thread_local char buf[512]; + thread_local char buf[ROOM_JOINED_KEY_MAX_SIZE]; const string_view &key { room_joined_key(buf, at<"room_id"_>(event), at<"origin"_>(event), at<"state_key"_>(event)) @@ -328,7 +328,7 @@ ircd::m::dbs::_index__room_state(db::txn &txn, return; const ctx::critical_assertion ca; - thread_local char buf[768]; + thread_local char buf[ROOM_STATE_KEY_MAX_SIZE]; const string_view &key { room_state_key(buf, at<"room_id"_>(event), at<"type"_>(event), at<"state_key"_>(event)) @@ -443,7 +443,7 @@ ircd::m::dbs::state_root(const mutable_buffer &out, const event::idx &event_idx, const uint64_t &depth) { - char keybuf[256 + 1 + 8 + 8]; const auto key + char keybuf[ROOM_EVENTS_KEY_MAX_SIZE]; const auto key { room_events_key(keybuf, room_id, depth, event_idx) }; diff --git a/ircd/m/room.cc b/ircd/m/room.cc index 5f4a5729b..08a0aca8c 100644 --- a/ircd/m/room.cc +++ b/ircd/m/room.cc @@ -474,7 +474,7 @@ ircd::m::room::messages::seek(const event::id &event_id) depth = byte_view(value); }); - char buf[m::state::KEY_MAX_SZ]; + char buf[dbs::ROOM_EVENTS_KEY_MAX_SIZE]; const auto seek_key { dbs::room_events_key(buf, room.room_id, depth, event_idx) @@ -487,7 +487,7 @@ ircd::m::room::messages::seek(const event::id &event_id) bool ircd::m::room::messages::seek(const uint64_t &depth) { - char buf[m::state::KEY_MAX_SZ]; + char buf[dbs::ROOM_EVENTS_KEY_MAX_SIZE]; const auto seek_key { dbs::room_events_key(buf, room.room_id, depth) @@ -664,8 +664,8 @@ const try closure(event::fetch::index(unquote(event_id))); }); - char key[768]; auto &column{dbs::room_state}; + char key[dbs::ROOM_STATE_KEY_MAX_SIZE]; column(dbs::room_state_key(key, room_id, type, state_key), [&closure] (const string_view &value) { @@ -738,8 +738,8 @@ const return closure(event::fetch::index(unquote(event_id), std::nothrow)); }); - char key[768]; auto &column{dbs::room_state}; + char key[dbs::ROOM_STATE_KEY_MAX_SIZE]; return column(dbs::room_state_key(key, room_id, type, state_key), std::nothrow, [&closure] (const string_view &value) { @@ -767,8 +767,8 @@ const (const string_view &event_id) {}); - char key[768]; auto &column{dbs::room_state}; + char key[dbs::ROOM_STATE_KEY_MAX_SIZE]; return db::has(column, dbs::room_state_key(key, room_id, type, state_key)); } @@ -794,7 +794,7 @@ const if(root_id) return m::state::count(root_id, type); - char keybuf[768]; + char keybuf[dbs::ROOM_STATE_KEY_MAX_SIZE]; const auto &key { dbs::room_state_key(keybuf, room_id, type) @@ -926,7 +926,7 @@ const return closure(event::fetch::index(unquote(event_id), std::nothrow)); }); - char keybuf[768]; + char keybuf[dbs::ROOM_STATE_KEY_MAX_SIZE]; const auto &key { dbs::room_state_key(keybuf, room_id, type) @@ -957,7 +957,7 @@ const return closure(unquote(key.at(1))); }); - char keybuf[768]; + char keybuf[dbs::ROOM_STATE_KEY_MAX_SIZE]; const auto &key { dbs::room_state_key(keybuf, room_id, type) @@ -1040,7 +1040,7 @@ const return closure(event::fetch::index(unquote(event_id), std::nothrow)); }); - char keybuf[768]; + char keybuf[dbs::ROOM_STATE_KEY_MAX_SIZE]; const auto &key { dbs::room_state_key(keybuf, room_id, type, state_key_lb) @@ -1150,7 +1150,7 @@ const closure(event::fetch::index(unquote(event_id), std::nothrow)); }); - char keybuf[768]; + char keybuf[dbs::ROOM_STATE_KEY_MAX_SIZE]; const auto &key { dbs::room_state_key(keybuf, room_id, type) @@ -1177,7 +1177,7 @@ const closure(unquote(key.at(1))); }); - char keybuf[768]; + char keybuf[dbs::ROOM_STATE_KEY_MAX_SIZE]; const auto &key { dbs::room_state_key(keybuf, room_id, type) @@ -1393,7 +1393,7 @@ const dbs::room_joined }; - char querybuf[512]; + char querybuf[dbs::ROOM_JOINED_KEY_MAX_SIZE]; const auto query { dbs::room_joined_key(querybuf, room.room_id, origin)