0
0
Fork 0
mirror of https://github.com/matrix-construct/construct synced 2024-12-27 07:54:05 +01:00

ircd:Ⓜ️:vm: Track evaluation hook phase.

This commit is contained in:
Jason Volk 2020-03-02 19:37:38 -08:00
parent d08a4f6f24
commit 14b962a695
4 changed files with 16 additions and 10 deletions

View file

@ -56,6 +56,7 @@ namespace ircd
#include "get.h" #include "get.h"
#include "query.h" #include "query.h"
#include "dbs/dbs.h" #include "dbs/dbs.h"
#include "hook.h"
#include "vm.h" #include "vm.h"
#include "invite_3pid.h" #include "invite_3pid.h"
#include "createroom.h" #include "createroom.h"
@ -80,7 +81,6 @@ namespace ircd
#include "direct_to_device.h" #include "direct_to_device.h"
#include "relates.h" #include "relates.h"
#include "txn.h" #include "txn.h"
#include "hook.h"
#include "visible.h" #include "visible.h"
#include "redacted.h" #include "redacted.h"
#include "feds.h" #include "feds.h"

View file

@ -83,11 +83,11 @@ struct ircd::m::vm::eval
vector_view<m::event> pdus; vector_view<m::event> pdus;
const json::iov *issue {nullptr}; const json::iov *issue {nullptr};
const event *event_ {nullptr}; const event *event_ {nullptr};
string_view room_id; string_view room_id;
event::id::buf event_id; event::id::buf event_id;
event::conforms report; event::conforms report;
string_view room_version; string_view room_version;
const hook::base::site *phase {nullptr};
static bool for_each_pdu(const std::function<bool (const event &)> &); static bool for_each_pdu(const std::function<bool (const event &)> &);
static const event *find_pdu(const eval &, const event::id &); static const event *find_pdu(const eval &, const event::id &);

View file

@ -667,6 +667,12 @@ try
}; };
#endif #endif
assert(!eval.phase);
const scope_restore hook_phase
{
eval.phase, std::addressof(hook)
};
hook(event, std::forward<T>(data)); hook(event, std::forward<T>(data));
#if 0 #if 0

View file

@ -14254,9 +14254,9 @@ console_cmd__vm(opt &out, const string_view &line)
<< std::right << std::setw(5) << "DONE" << " " << std::right << std::setw(5) << "DONE" << " "
<< std::right << std::setw(9) << "SEQUENCE" << " " << std::right << std::setw(9) << "SEQUENCE" << " "
<< std::right << std::setw(9) << "SEQSHARE" << " " << std::right << std::setw(9) << "SEQSHARE" << " "
<< std::right << std::setw(9) << "SEQSHARE" << " " << std::left << std::setw(9) << "PHASE" << " "
<< std::right << std::setw(8) << "CELLS" << " " << std::right << std::setw(6) << "SIZE" << " "
<< std::right << std::setw(8) << "SIZE" << " " << std::right << std::setw(5) << "CELLS" << " "
<< std::right << std::setw(8) << "DEPTH" << " " << std::right << std::setw(8) << "DEPTH" << " "
<< std::right << std::setw(5) << "VER" << " " << std::right << std::setw(5) << "VER" << " "
<< std::left << std::setw(40) << "ROOM ID" << " " << std::left << std::setw(40) << "ROOM ID" << " "
@ -14286,11 +14286,11 @@ console_cmd__vm(opt &out, const string_view &line)
<< std::right << std::setw(5) << eval->pdus.size() << " " << std::right << std::setw(5) << eval->pdus.size() << " "
<< std::right << std::setw(5) << done << " " << std::right << std::setw(5) << done << " "
<< std::right << std::setw(9) << eval->sequence << " " << std::right << std::setw(9) << eval->sequence << " "
<< std::right << std::setw(9) << eval->sequence_shared[0] << " " << std::right << std::setw(9) << std::max(eval->sequence_shared[0], eval->sequence_shared[1]) << " "
<< std::right << std::setw(9) << eval->sequence_shared[1] << " " << std::left << std::setw(9) << (eval->phase? eval->phase->name() : ""_sv) << " "
<< std::right << std::setw(8) << (eval->txn? eval->txn->size() : 0UL) << " " << std::right << std::setw(6) << (eval->txn? eval->txn->bytes() : 0UL) << " "
<< std::right << std::setw(8) << (eval->txn? eval->txn->bytes() : 0UL) << " " << std::right << std::setw(5) << (eval->txn? eval->txn->size() : 0UL) << " "
<< std::right << std::setw(8) << (eval->event_? long(json::get<"depth"_>(*eval->event_)) : -1L) << " " << std::right << std::setw(8) << (eval->event_ && eval->event_id? long(json::get<"depth"_>(*eval->event_)) : -1L) << " "
<< std::right << std::setw(5) << eval->room_version << " " << std::right << std::setw(5) << eval->room_version << " "
<< std::left << std::setw(40) << trunc(eval->room_id, 40) << " " << std::left << std::setw(40) << trunc(eval->room_id, 40) << " "
<< std::left << std::setw(60) << trunc(eval->event_id, 60) << " " << std::left << std::setw(60) << trunc(eval->event_id, 60) << " "