From 70c901a89421243b918804fa0dd9c1d81cd0a8ae Mon Sep 17 00:00:00 2001 From: Jason Volk Date: Wed, 6 Feb 2019 20:54:04 -0800 Subject: [PATCH] ircd::m::vm: Add json::array eval ctor. --- include/ircd/m/vm.h | 10 ++++++++-- ircd/m.cc | 9 +++++++++ 2 files changed, 17 insertions(+), 2 deletions(-) diff --git a/include/ircd/m/vm.h b/include/ircd/m/vm.h index 1166e2058..059a64696 100644 --- a/include/ircd/m/vm.h +++ b/include/ircd/m/vm.h @@ -49,13 +49,18 @@ struct ircd::m::vm::eval uint64_t id {++id_ctr}; ctx::ctx *ctx {ctx::current}; + const vm::opts *opts {&default_opts}; const vm::copts *copts {nullptr}; + + uint64_t sequence {0}; + db::txn *txn {nullptr}; + string_view room_id; const json::iov *issue {nullptr}; const event *event_ {nullptr}; - uint64_t sequence {0}; - db::txn *txn {nullptr}; + json::array pdus; + event::id::buf event_id; public: @@ -68,6 +73,7 @@ struct ircd::m::vm::eval eval(const vm::opts &); eval(const vm::copts &); eval(const event &, const vm::opts & = default_opts); + eval(const json::array &event, const vm::opts & = default_opts); eval(json::iov &event, const json::iov &content, const vm::copts & = default_copts); eval(const room &, json::iov &event, const json::iov &content); eval() = default; diff --git a/ircd/m.cc b/ircd/m.cc index 96fbe828e..7e835f83a 100644 --- a/ircd/m.cc +++ b/ircd/m.cc @@ -999,6 +999,15 @@ ircd::m::vm::eval::eval(const event &event, operator()(event); } +ircd::m::vm::eval::eval(const json::array &event, + const vm::opts &opts) +:opts{&opts} +,pdus{event} +{ + for(const json::object &pdu : this->pdus) + operator()(pdu); +} + ircd::m::vm::eval::eval(const vm::copts &opts) :opts{&opts} ,copts{&opts}