My Project
Loading...
Searching...
No Matches
AlgorithmRunner.hpp
1#pragma once
2
3#include <string>
4#include <thread>
5#include <atomic>
6#include <chrono>
7#include <functional>
8#include "extern/nlohmann/json.hpp"
9
10using json = nlohmann::json;
11
13public:
14 // Callback types
15 using ProgressCallback = std::function<void(float progress, const std::string& status, const json& data)>;
16 using CompletionCallback = std::function<void(const json& result)>;
17
20
21 bool start(const std::string& algorithmPath, const json& inputData, const json& config,
22 ProgressCallback progressCb = nullptr, CompletionCallback completionCb = nullptr,
23 int timeoutSeconds = 300);
24 void stop();
25 bool isRunning() const;
26 float getProgress() const;
27 std::string getStatus() const;
28 json getResult() const;
29
30private:
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;
40 json resultData;
41 std::string statusMessage;
42 int exitCode;
43 int timeoutSeconds;
44 std::chrono::steady_clock::time_point startTime;
45
46 // Callbacks
47 ProgressCallback progressCallback;
48 CompletionCallback completionCallback;
49
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();
56};
Definition AlgorithmRunner.hpp:12