52 lines
1.2 KiB
C++
52 lines
1.2 KiB
C++
#pragma once
|
|
|
|
#include <vector>
|
|
#include <memory>
|
|
#include <initializer_list>
|
|
#include <utility>
|
|
#include "core/NodeContext.h"
|
|
#include "core/NetworkManager.h"
|
|
#include "core/ClusterManager.h"
|
|
#include "core/ApiServer.h"
|
|
#include "core/TaskManager.h"
|
|
#include "Service.h"
|
|
#include "util/Logging.h"
|
|
|
|
class Spore {
|
|
public:
|
|
Spore();
|
|
Spore(std::initializer_list<std::pair<String, String>> initialLabels);
|
|
~Spore();
|
|
|
|
// Core lifecycle methods
|
|
void setup();
|
|
void begin();
|
|
void loop();
|
|
|
|
// Service management
|
|
void registerService(std::shared_ptr<Service> service);
|
|
void registerService(Service* service);
|
|
|
|
// Access to core components
|
|
NodeContext& getContext() { return ctx; }
|
|
NetworkManager& getNetwork() { return network; }
|
|
TaskManager& getTaskManager() { return taskManager; }
|
|
ClusterManager& getCluster() { return cluster; }
|
|
ApiServer& getApiServer() { return apiServer; }
|
|
|
|
private:
|
|
void initializeCore();
|
|
void registerCoreServices();
|
|
void startApiServer();
|
|
|
|
NodeContext ctx;
|
|
NetworkManager network;
|
|
TaskManager taskManager;
|
|
ClusterManager cluster;
|
|
ApiServer apiServer;
|
|
|
|
std::vector<std::shared_ptr<Service>> services;
|
|
bool initialized;
|
|
bool apiServerStarted;
|
|
};
|