#ifndef TRADING_CORE_H #define TRADING_CORE_H #include #include "../data_processing/DataBuffer.h" #include "../data_processing/DataQualityValidator.h" #include "../data_processing/OrderProcessor.h" #include "../data_processing/BigOrderManager.h" #include "../network_communication/FaultToleranceManager.h" #include "../network_communication/SubscriptionManager.h" #include "../configuration/ConfigurationManager.h" #include "../configuration/LogManager.h" #include "../utilities/EventBus.h" class TradingCore : public QObject { Q_OBJECT public: static TradingCore* instance(); // Core service access SubscriptionManager* subscriptionManager(); OrderProcessor* orderProcessor(); BigOrderManager* bigOrderManager(); LogManager* logManager(); EventBus* eventBus(); // New system component access DataBuffer* dataBuffer(); DataQualityValidator* dataQuality(); FaultToleranceManager* faultTolerance(); ConfigurationManager* configManager(); // System control void initialize(); void shutdown(); // System status bool isInitialized() const { return m_initialized; } QString getSystemStatus() const; signals: void systemInitialized(); void systemShutdown(); void errorOccurred(const QString& error); private: explicit TradingCore(QObject *parent = nullptr); ~TradingCore(); bool m_initialized = false; SubscriptionManager* m_subscriptionManager = nullptr; OrderProcessor* m_orderProcessor = nullptr; BigOrderManager* m_bigOrderManager = nullptr; LogManager* m_logManager = nullptr; EventBus* m_eventBus = nullptr; // New system components DataBuffer* m_dataBuffer = nullptr; DataQualityValidator* m_dataQuality = nullptr; FaultToleranceManager* m_faultTolerance = nullptr; ConfigurationManager* m_configManager = nullptr; }; #endif // TRADING_CORE_H