mirror of
https://github.com/MihailRis/voxelcore.git
synced 2026-10-04 18:41:51 +00:00
fix commands execution thread
This commit is contained in:
parent
4478afa1ef
commit
48f5de8adf
3 changed files with 18 additions and 16 deletions
|
|
@ -1,5 +1,6 @@
|
|||
#include "stdin_reader.hpp"
|
||||
|
||||
#include "engine/Engine.hpp"
|
||||
#include "logic/CommandsInterpreter.hpp"
|
||||
#include "coders/json.hpp"
|
||||
#include "debug/Logger.hpp"
|
||||
|
|
@ -11,8 +12,9 @@ static debug::Logger logger("stdin-reader");
|
|||
|
||||
static std::thread reader_thread;
|
||||
|
||||
void start_stdin_reader(cmd::CommandsInterpreter& interpreter) {
|
||||
reader_thread = std::thread([&interpreter]() {
|
||||
void start_stdin_reader(Engine& engine) {
|
||||
reader_thread = std::thread([&engine]() {
|
||||
auto& interpreter = engine.getCmd();
|
||||
logger.info() << "reader thread started";
|
||||
|
||||
std::string line;
|
||||
|
|
@ -20,16 +22,18 @@ void start_stdin_reader(cmd::CommandsInterpreter& interpreter) {
|
|||
if (line.empty()) {
|
||||
continue;
|
||||
}
|
||||
try {
|
||||
auto result = interpreter.execute(line);
|
||||
if (result.isString()) {
|
||||
logger.info() << result.asString();
|
||||
} else {
|
||||
logger.info() << json::stringify(result, true);
|
||||
engine.postRunnable([line, &interpreter] () {
|
||||
try {
|
||||
auto result = interpreter.execute(line);
|
||||
if (result.isString()) {
|
||||
logger.info() << result.asString();
|
||||
} else {
|
||||
logger.info() << json::stringify(result, true);
|
||||
}
|
||||
} catch (const std::exception& err) {
|
||||
logger.error() << err.what();
|
||||
}
|
||||
} catch (const std::exception& err) {
|
||||
logger.error() << err.what();
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
reader_thread.detach();
|
||||
|
|
|
|||
|
|
@ -1,7 +1,5 @@
|
|||
#pragma once
|
||||
|
||||
namespace cmd {
|
||||
class CommandsInterpreter;
|
||||
}
|
||||
class Engine;
|
||||
|
||||
void start_stdin_reader(cmd::CommandsInterpreter& interpreter);
|
||||
void start_stdin_reader(Engine& engine);
|
||||
|
|
|
|||
|
|
@ -193,7 +193,7 @@ void Engine::initialize(CoreParameters coreParameters) {
|
|||
project->loadProjectClientScript();
|
||||
}
|
||||
if (params.stdinCommands) {
|
||||
start_stdin_reader(*cmd);
|
||||
start_stdin_reader(*this);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue