#pragma once #include #include #include "AudioManager.h" #include "FileLogger.h" #include "DatabaseManager.h" #include "NetworkManager.h" class MainApplication { private: FileLoggerPtr mLogger; DatabaseManagerPtr mDatabaseManager; NetworkManagerPtr mNetworkManager; AudioManagerPtr mAudioManager; public: MainApplication(); ~MainApplication(); void Initialize(const std::filesystem::path& workDir); void RunServer(); void PlayAudio(); void ShutDown(); static std::shared_ptr Create(); }; using MainApplicationPtr = std::shared_ptr;