71 OperationMode mode = OperationMode::Direct,
72 int server_port = 9090,
73 bool skip_host_library_load =
false)
noexcept;
80 bool eval(
const std::string& code);
87 bool eval_file(
const std::string& filepath);
93 void start_server(
int port = 9090);
104 [[nodiscard]]
bool is_server_running()
const;
106#ifdef MAYAFLUX_PLATFORM_WINDOWS
107 void set_main_thread_id(uint32_t thread_id);
115 void* get_symbol_address(
const std::string& name);
121 std::vector<std::string> get_defined_symbols();
127 void add_include_path(
const std::string& path);
133 void add_compile_flag(
const std::string& flag);
139 void on_success(std::function<
void()> callback);
145 void on_error(std::function<
void(
const std::string&)> callback);
151 void on_server_client_connected(std::function<
void(
const ClientInfo&)> callback);
157 void on_server_client_disconnected(std::function<
void(
const ClientInfo&)> callback);
163 void on_server_started(std::function<
void()> callback);
175 void await_shutdown(
const std::atomic<bool>* external_flag);
182 void request_shutdown();
188 [[nodiscard]] std::string get_last_error()
const;
194 [[nodiscard]] OperationMode get_current_mode()
const;
209 return server_loop_rate;
220 bool initialize_interpreter(
bool skip_host_library_load);
221 bool initialize_server(
int port);
222 std::atomic<bool> m_shutdown_requested {
false };
226 std::expected<std::string, std::string> handle_server_message(std::string_view message);
233 static std::string escape_json(
const std::string& str);