#ifndef MAINAPP_H #define MAINAPP_H #include #include #include #include #include #include #include #include #include #include "forward_declarations.h" #include "utils.h" #include "threaddata.h" #include "client.h" #include "mqttpacket.h" #include "subscriptionstore.h" #include "configfileparser.h" class MainApp { static MainApp *instance; bool started = false; bool running = true; std::vector> threads; std::shared_ptr subscriptionStore; std::unique_ptr confFileParser; std::forward_list> taskQueue; int taskEventFd = -1; std::mutex eventMutex; void loadConfig(); void reloadConfig(); static void doHelp(const char *arg); static void showLicense(); MainApp(const std::string &configFilePath); public: MainApp(const MainApp &rhs) = delete; MainApp(MainApp &&rhs) = delete; static MainApp *getMainApp(); static void initMainApp(int argc, char *argv[]); void start(); void quit(); bool getStarted() const {return started;} void queueConfigReload(); }; #endif // MAINAPP_H