Finish implementing LUA_PROBE
This commit is contained in:
@@ -31,11 +31,12 @@ eng::string Invocation::debug_string() const {
|
||||
oss << "inv[";
|
||||
switch (kind_) {
|
||||
case InvocationKind::INVALID: oss << "invalid"; break;
|
||||
case InvocationKind::LUA_CALL: oss << "lua_call"; break;
|
||||
case InvocationKind::LUA_EXPR: oss << "lua"; break;
|
||||
case InvocationKind::LUA_INVOKE: oss << "lua_invoke"; break;
|
||||
case InvocationKind::LUA_PROBE: oss << "lua_probe"; break;
|
||||
case InvocationKind::LUA_EXPR: oss << "lua_expr"; break;
|
||||
case InvocationKind::LUA_SOURCE: oss << "lua_source"; break;
|
||||
case InvocationKind::FLUSH_PRINTS: oss << "flush_prints"; break;
|
||||
case InvocationKind::TICK: oss << "tick"; break;
|
||||
case InvocationKind::LUA_SOURCE: oss << "lua_source"; break;
|
||||
default: oss << "UNKNOWN"; break;
|
||||
}
|
||||
oss << " a=" << actor_;
|
||||
|
||||
@@ -247,7 +247,16 @@ public:
|
||||
}
|
||||
|
||||
virtual void event_call_function(InvocationKind kind, int64_t place_id, std::string_view datapk, StreamBuffer *retpk) override {
|
||||
delayed_invocations_.emplace_back(kind, actor_id_, place_id, datapk);
|
||||
switch (kind) {
|
||||
case InvocationKind::LUA_PROBE: {
|
||||
world_to_asynchronous();
|
||||
world_->probe_lua_call(actor_id_, place_id, datapk, retpk);
|
||||
break;
|
||||
}
|
||||
default: {
|
||||
delayed_invocations_.emplace_back(kind, actor_id_, place_id, datapk);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
virtual void event_update() override {
|
||||
|
||||
@@ -194,7 +194,17 @@ public:
|
||||
}
|
||||
|
||||
virtual void event_call_function(InvocationKind kind, int64_t place_id, std::string_view datapk, StreamBuffer *retpk) override {
|
||||
delayed_invocations_.emplace_back(kind, admin_id_, place_id, datapk);
|
||||
switch (kind) {
|
||||
case InvocationKind::LUA_PROBE: {
|
||||
master_->snapshot();
|
||||
master_->probe_lua_call(admin_id_, place_id, datapk, retpk);
|
||||
master_->rollback();
|
||||
break;
|
||||
}
|
||||
default: {
|
||||
delayed_invocations_.emplace_back(kind, admin_id_, place_id, datapk);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
virtual void event_update() override {
|
||||
|
||||
@@ -700,7 +700,7 @@ void World::run_unittests() {
|
||||
|
||||
void World::invoke(const Invocation &inv) {
|
||||
switch (inv.kind()) {
|
||||
case InvocationKind::LUA_CALL:
|
||||
case InvocationKind::LUA_INVOKE:
|
||||
invoke_lua_call(inv.actor(), inv.place(), inv.datapack());
|
||||
break;
|
||||
case InvocationKind::LUA_EXPR:
|
||||
|
||||
Reference in New Issue
Block a user