fix lua file stuff and more file stuff

This commit is contained in:
Lion Kortlepel 2020-11-13 22:43:35 +01:00
parent cdd9ef86ae
commit 6710c18168
4 changed files with 25 additions and 32 deletions

View File

@ -3,10 +3,10 @@
///
#pragma once
#include <lua.hpp>
#include <any>
#include <filesystem>
#include <iostream>
#include <lua.hpp>
#include <memory>
#include <mutex>
#include <set>
@ -43,14 +43,13 @@ private:
std::set<std::pair<std::string, std::string>> _RegisteredEvents;
lua_State* luaState { nullptr };
fs::file_time_type _LastWrote;
std::string _PluginName;
std::string _FileName;
std::string _PluginName {};
std::string _FileName {};
bool _StopThread = false;
bool _Console = false;
// this is called by the ctor to ensure RAII
void Init();
public:
void Init();
void RegisterEvent(const std::string& Event, const std::string& FunctionName);
std::string GetRegistered(const std::string& Event) const;
void UnRegisterEvent(const std::string& Event);

View File

@ -33,6 +33,7 @@ void RegisterFiles(const std::string& Path, bool HotSwap) {
std::unique_ptr<Lua> ScriptToInsert(new Lua(Name, FileName, fs::last_write_time(FileName)));
auto& Script = *ScriptToInsert;
PluginEngine.insert(std::move(ScriptToInsert));
Script.Init();
if (HotSwap)
info(Sec("[HOTSWAP] Added : ") + Script.GetFileName().substr(Script.GetFileName().find('\\')));
}

View File

@ -107,7 +107,7 @@ bool CheckLua(lua_State* L, int r) {
auto MaybeS = GetScript(L);
if (MaybeS.has_value()) {
Lua& S = MaybeS.value();
std::string a = S.GetFileName().substr(S.GetFileName().find('\\'));
std::string a = fs::path(S.GetFileName()).filename().string();
warn(a + " | " + msg);
return false;
}
@ -160,7 +160,7 @@ int lua_TriggerEventG(lua_State* L) {
}
char* ThreadOrigin(Lua* lua) {
std::string T = "Thread in " + lua->GetFileName().substr(lua->GetFileName().find('\\'));
std::string T = "Thread in " + fs::path(lua->GetFileName()).filename().string();
char* Data = new char[T.size() + 1];
ZeroMemory(Data, T.size() + 1);
memcpy(Data, T.c_str(), T.size());
@ -542,13 +542,11 @@ Lua::Lua(const std::string& PluginName, const std::string& FileName, fs::file_ti
}
SetLastWrite(LastWrote);
_Console = Console;
Init();
}
Lua::Lua(bool Console)
: luaState(luaL_newstate()) {
_Console = Console;
Init();
}
void Lua::Execute(const std::string& Command) {

View File

@ -27,32 +27,27 @@ void UnixSignalHandler(int sig) {
}
int main(int argc, char* argv[]) {
try {
#ifndef WIN32
// ignore SIGPIPE, the signal that is sent for example when a client
// disconnects while data is being sent to him ("broken pipe").
signal(SIGPIPE, UnixSignalHandler);
// ignore SIGPIPE, the signal that is sent for example when a client
// disconnects while data is being sent to him ("broken pipe").
signal(SIGPIPE, UnixSignalHandler);
#endif // WIN32
DebugPrintTID();
// curl needs to be initialized to properly deallocate its resources later
Assert(curl_global_init(CURL_GLOBAL_DEFAULT) == CURLE_OK);
DebugPrintTID();
// curl needs to be initialized to properly deallocate its resources later
Assert(curl_global_init(CURL_GLOBAL_DEFAULT) == CURLE_OK);
#ifdef DEBUG
std::thread t1(loop);
t1.detach();
std::thread t1(loop);
t1.detach();
#endif
ConsoleInit();
InitServer(argc, argv);
InitConfig();
InitLua();
InitRes();
HBInit();
StatInit();
NetMain();
// clean up curl at the end to be sure
curl_global_cleanup();
} catch (const std::exception& e) {
error(std::string(e.what()));
throw;
}
ConsoleInit();
InitServer(argc, argv);
InitConfig();
InitLua();
InitRes();
HBInit();
StatInit();
NetMain();
// clean up curl at the end to be sure
curl_global_cleanup();
return 0;
}