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;
111 void* get_symbol_address(
const std::string& name);
117 std::vector<std::string> get_defined_symbols();
123 void add_include_path(
const std::string& path);
129 void add_compile_flag(
const std::string& flag);
135 void load_library(
const std::string& path);
141 void on_success(std::function<
void()> callback);
147 void on_error(std::function<
void(
const std::string&)> callback);
153 void on_server_client_connected(std::function<
void(
const ClientInfo&)> callback);
159 void on_server_client_disconnected(std::function<
void(
const ClientInfo&)> callback);
165 void on_server_started(std::function<
void()> callback);
177 void await_shutdown(
const std::atomic<bool>* external_flag);
184 void request_shutdown();
190 [[nodiscard]] std::string get_last_error()
const;
196 [[nodiscard]] OperationMode get_current_mode()
const;
211 return server_loop_rate;
222 bool initialize_interpreter(
bool skip_host_library_load);
223 bool initialize_server(
int port);
224 std::atomic<bool> m_shutdown_requested {
false };
228 std::expected<std::string, std::string> handle_server_message(std::string_view message);
235 static std::string escape_json(
const std::string& str);