Files
DMF-Studio/libs/dmf-node/include/dmf-node/node_runner.hpp
T
Johanness 5b5ffa1308 feat: scaffold project framework with engine, node skeleton, and passthrough node
- CMake build system with vcpkg dependency management
- libdmf-node: Node interface, port definitions, WebSocket control
  server, node runner with MXL lifecycle management
- libdmf-engine: Graph model (nodes/edges CRUD, serialization),
  FlowManager (UUID + V210 NMOS flow definitions), ProcessManager
  (fork/exec node processes), ApiServer (REST API for graph control)
- Passthrough node: reads V210 grains from MXL, copies, writes to MXL
- Unit tests for Graph and FlowManager (6 cases, 21 assertions)
- MXL SDK as git submodule (symlinked from extern/mxl)
2026-05-26 01:32:50 +03:00

40 lines
833 B
C++

#pragma once
#include <dmf-node/node.hpp>
#include <dmf-node/control_server.hpp>
#include <mxl/mxl.h>
#include <atomic>
#include <memory>
#include <string>
namespace dmf_node {
class NodeRunner {
public:
template <typename NodeType>
static int run(int argc, char* argv[]) {
NodeRunner runner;
if (!runner.parse_args(argc, argv)) {
return 1;
}
auto node = std::make_unique<NodeType>();
return runner.exec(std::move(node));
}
private:
bool parse_args(int argc, char* argv[]);
int exec(std::unique_ptr<Node> node);
std::string node_id_;
uint16_t control_port_ = 0;
std::string mxl_domain_ = "/dev/shm/mxl";
std::string config_str_;
mxlInstance mxl_instance_ = nullptr;
std::atomic<bool> running_{false};
};
} // namespace dmf_node