From 8fb96b705df6e67728dd9c090eb8e79eb901d088 Mon Sep 17 00:00:00 2001 From: xx Date: Fri, 7 Jun 2024 19:44:35 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/core/global.cpp | 2 +- src/core/subscribemanager.cpp | 30 +++++++++++++++++++++++------- src/module/basemodule.h | 2 +- src/module/mutex.cpp | 2 +- src/module/mutex.h | 2 +- src/module/timer.cpp | 2 +- src/module/timer.h | 2 +- 7 files changed, 29 insertions(+), 13 deletions(-) diff --git a/src/core/global.cpp b/src/core/global.cpp index 450330a..836c1e4 100644 --- a/src/core/global.cpp +++ b/src/core/global.cpp @@ -15,7 +15,7 @@ void fastweb::global::regist(sol::state* lua) for_iter(iter, (*m_ptrs.parent())) { auto im = static_cast(iter->second); - im->regist_global(iter->first, lua); + im->regist_global(iter->first.c_str(), lua); } m_ptrs.unlock(); } diff --git a/src/core/subscribemanager.cpp b/src/core/subscribemanager.cpp index 662c203..bfe1c90 100644 --- a/src/core/subscribemanager.cpp +++ b/src/core/subscribemanager.cpp @@ -83,18 +83,34 @@ void fastweb::subscribe_manager::exec(const std::string& filepath, network::http std::string exception_string; try { - auto lbResult = lua->state->load_file(filepath); - if (lbResult.valid() == false) - { - sol::error err = lbResult; - throw ylib::exception("Failed to load script, " + std::string(err.what())); + //auto lbResult = lua->state->load_file(filepath); + //if (lbResult.valid() == false) + //{ + // sol::error err = lbResult; + // throw ylib::exception("Failed to load script, " + std::string(err.what())); + //} + //module::request m_request(request); + //module::response m_response(response); + + //(*lua->state)["response"] = &m_response; + //(*lua->state)["request"] = &m_request; + //lbResult(); + + sol::load_result script = lua->state->load_file(filepath); + if (!script.valid()) { + sol::error err = script; + throw ylib::exception(err.what()); } module::request m_request(request); module::response m_response(response); - (*lua->state)["response"] = &m_response; (*lua->state)["request"] = &m_request; - lbResult(); + + sol::protected_function_result result = script(); + if (!result.valid()) { + sol::error err = result; + throw ylib::exception(err.what()); + } } catch (const std::exception& e) { diff --git a/src/module/basemodule.h b/src/module/basemodule.h index 5fc1893..942bea0 100644 --- a/src/module/basemodule.h +++ b/src/module/basemodule.h @@ -14,7 +14,7 @@ namespace module /// /// /// - virtual void regist_global(const std::string& name,sol::state* lua) = 0; + virtual void regist_global(const char* name, sol::state* lua) = 0; /// /// 释放全局变量(global类管理) /// diff --git a/src/module/mutex.cpp b/src/module/mutex.cpp index d6fd869..59ab651 100644 --- a/src/module/mutex.cpp +++ b/src/module/mutex.cpp @@ -34,7 +34,7 @@ void module::mutex::regist(sol::state* lua) ); } -void module::mutex::regist_global(const std::string& name, sol::state* lua) +void module::mutex::regist_global(const char* name, sol::state* lua) { lua->registry()[name] = this; (*lua)[name] = this; diff --git a/src/module/mutex.h b/src/module/mutex.h index 0bd9706..7f4103a 100644 --- a/src/module/mutex.h +++ b/src/module/mutex.h @@ -27,7 +27,7 @@ namespace module static void regist(sol::state* lua); private: // 通过 imodule 继承 - virtual void regist_global(const std::string& name, sol::state* lua); + virtual void regist_global(const char* name, sol::state* lua); virtual void delete_global() { delete this; } std::mutex m_mutex; }; diff --git a/src/module/timer.cpp b/src/module/timer.cpp index f7e127e..8d69114 100644 --- a/src/module/timer.cpp +++ b/src/module/timer.cpp @@ -66,7 +66,7 @@ void module::timer::regist(sol::state* lua) ); } -void module::timer::regist_global(const std::string& name, sol::state* lua) +void module::timer::regist_global(const char* name, sol::state* lua) { lua->registry()[name] = this; (*lua)[name] = this; diff --git a/src/module/timer.h b/src/module/timer.h index 45eb6fb..6881293 100644 --- a/src/module/timer.h +++ b/src/module/timer.h @@ -41,7 +41,7 @@ namespace module /// void remove(const std::string& name, sol::this_state ts); static void regist(sol::state* lua); - virtual void regist_global(const std::string& name, sol::state* lua) override; + virtual void regist_global(const char* name, sol::state* lua) override; virtual void delete_global() { delete this; } private: