From ea737001031bcfe1304fbd3e5f59449efc3c28b1 Mon Sep 17 00:00:00 2001 From: Jason Volk Date: Sat, 12 May 2018 02:27:39 -0700 Subject: [PATCH] ircd::m: Add contains_url to filter tuple. --- include/ircd/m/filter.h | 3 +- include/ircd/m/vm.h | 9 ++++++ modules/vm.cc | 69 ++++++++++++++--------------------------- 3 files changed, 34 insertions(+), 47 deletions(-) diff --git a/include/ircd/m/filter.h b/include/ircd/m/filter.h index 04d9cef10..2b39e0881 100644 --- a/include/ircd/m/filter.h +++ b/include/ircd/m/filter.h @@ -51,7 +51,8 @@ struct ircd::m::room_event_filter json::property, json::property, json::property, - json::property + json::property, + json::property > { using super_type::tuple; diff --git a/include/ircd/m/vm.h b/include/ircd/m/vm.h index 3d807888a..4e5fa529e 100644 --- a/include/ircd/m/vm.h +++ b/include/ircd/m/vm.h @@ -230,6 +230,15 @@ struct ircd::m::vm::copts /// Include origin_server_ts bool add_origin_server_ts {true}; + /// Add prev_events + bool add_prev_events {true}; + + /// Add prev_state + bool add_prev_state {true}; + + /// Add auth_events + bool add_auth_events {true}; + /// Whether to log a debug message before commit bool debuglog_precommit {false}; diff --git a/modules/vm.cc b/modules/vm.cc index b58f85de5..e1624b373 100644 --- a/modules/vm.cc +++ b/modules/vm.cc @@ -151,14 +151,9 @@ ircd::m::vm::eval__commit_room(eval &eval, }; char ae_buf[512]; - json::array auth_events - { - json::get<"auth_events"_>(evf)? - json::get<"auth_events"_>(evf): - json::array{"[]"} - }; + json::array auth_events; - if(depth != -1) + if(depth != -1 && opts.add_auth_events) { std::vector ae; @@ -247,49 +242,31 @@ ircd::m::vm::eval__commit_room(eval &eval, }); } - //TODO: X - const auto &prev_state + static const json::array &prev_state { - json::get<"prev_state"_>(evf)? - json::get<"prev_state"_>(evf): - json::array{"[]"} - }; -/* - const event::fetch pvf - { - prev_event_id, std::nothrow - }; -*/ - //TODO: X - json::value prev_event0[] - { - { string_view{prev_event_id} }, - { json::get<"hashes"_>(evf) } + json::empty_array }; - //TODO: X - json::value prev_event + const json::iov::add_if prevs[] { - prev_event0, empty(prev_event_id)? 0UL: 2UL - }; - - //TODO: X - json::value prev_events_ - { - &prev_event, !empty(prev_event_id) - }; - - std::string prev_events - { - json::strung(prev_events_) - }; - - //TODO: X - const json::iov::push prevs[] - { - { event, { "auth_events", auth_events } }, - { event, { "prev_events", prev_events } }, - { event, { "prev_state", prev_state } }, + { + event, opts.add_auth_events, + { + "auth_events", auth_events + } + }, + { + event, opts.add_prev_events, + { + "prev_events", prev_events + } + }, + { + event, opts.add_prev_state, + { + "prev_state", prev_state + } + }, }; return eval(event, contents);