15 using ProgressCallback = std::function<void(
float progress,
const std::string& status,
const json& data)>;
16 using CompletionCallback = std::function<void(
const json& result)>;
21 bool start(
const std::string& algorithmPath,
const json& inputData,
const json& config,
22 ProgressCallback progressCb =
nullptr, CompletionCallback completionCb =
nullptr,
23 int timeoutSeconds = 300);
25 bool isRunning()
const;
26 float getProgress()
const;
27 std::string getStatus()
const;
28 json getResult()
const;
31 std::string algorithmPath;
32 std::string inputFile;
33 std::string outputFile;
34 std::string configFile;
35 std::string progressFile;
36 std::thread processThread;
37 std::atomic<bool> running;
38 std::atomic<bool> stopRequested;
39 std::atomic<float> progress;
41 std::string statusMessage;
44 std::chrono::steady_clock::time_point startTime;
47 ProgressCallback progressCallback;
48 CompletionCallback completionCallback;
50 void runAlgorithmProcess();
51 void monitorProgress();
52 void cleanupTempFiles();
53 std::string generateTempFile(
const std::string& prefix);
54 bool validateResult(
const json& result);
55 void updateProgress();