diff --git a/ResourceManager.cpp b/ResourceManager.cpp index f2895bf9..394b4aaf 100644 --- a/ResourceManager.cpp +++ b/ResourceManager.cpp @@ -25,6 +25,11 @@ ResourceManager::ResourceManager() detection_string = ""; detection_is_required = false; DetectDevicesThread = nullptr; + + /*-------------------------------------------------------------------------*\ + | Initialize Server Instance | + \*-------------------------------------------------------------------------*/ + server = new NetworkServer(rgb_controllers); } ResourceManager::~ResourceManager() @@ -91,6 +96,11 @@ void ResourceManager::DeviceListChanged() DeviceListChangeMutex.unlock(); } +NetworkServer* ResourceManager::GetServer() +{ + return(server); +} + unsigned int ResourceManager::GetDetectionPercent() { return (detection_percent.load()); diff --git a/ResourceManager.h b/ResourceManager.h index c19de62a..5b436051 100644 --- a/ResourceManager.h +++ b/ResourceManager.h @@ -7,6 +7,8 @@ #include #include "i2c_smbus.h" +#include "NetworkClient.h" +#include "NetworkServer.h" #include "RGBController.h" typedef std::function&)> I2CBusDetectorFunction; @@ -37,6 +39,7 @@ public: unsigned int GetDetectionPercent(); const char* GetDetectionString(); + NetworkServer* GetServer(); void DeviceListChanged(); @@ -53,22 +56,49 @@ public: private: static std::unique_ptr instance; - std::atomic detection_is_required; - std::atomic detection_percent; - const char* detection_string; - + /*-------------------------------------------------------------------------------------*\ + | I2C/SMBus Interfaces | + \*-------------------------------------------------------------------------------------*/ std::vector busses; + + /*-------------------------------------------------------------------------------------*\ + | RGBControllers | + \*-------------------------------------------------------------------------------------*/ + //std::vector rgb_controllers_hw; std::vector rgb_controllers; + + /*-------------------------------------------------------------------------------------*\ + | Network Server | + \*-------------------------------------------------------------------------------------*/ + NetworkServer* server; + + /*-------------------------------------------------------------------------------------*\ + | Network Clients | + \*-------------------------------------------------------------------------------------*/ + //std::vector clients; + + /*-------------------------------------------------------------------------------------*\ + | Detectors | + \*-------------------------------------------------------------------------------------*/ std::vector device_detectors; std::vector device_detector_strings; std::vector i2c_bus_detectors; std::vector i2c_device_detectors; std::vector i2c_device_detector_strings; + /*-------------------------------------------------------------------------------------*\ + | Detection Thread and Detection State | + \*-------------------------------------------------------------------------------------*/ std::thread * DetectDevicesThread; - std::mutex DetectDeviceMutex; + + std::atomic detection_is_required; + std::atomic detection_percent; + const char* detection_string; + /*-------------------------------------------------------------------------------------*\ + | Device List Changed Callback | + \*-------------------------------------------------------------------------------------*/ std::mutex DeviceListChangeMutex; std::vector DeviceListChangeCallbacks; std::vector DeviceListChangeCallbackArgs; diff --git a/main.cpp b/main.cpp index b67e5d72..5f9f6f8e 100644 --- a/main.cpp +++ b/main.cpp @@ -150,7 +150,6 @@ int main(int argc, char* argv[]) std::vector &rgb_controllers = ResourceManager::get()->GetRGBControllers(); ProfileManager profile_manager(rgb_controllers); - NetworkServer server(rgb_controllers); if(!AttemptLocalConnection(rgb_controllers)) { @@ -163,7 +162,7 @@ int main(int argc, char* argv[]) unsigned int ret_flags = RET_FLAG_START_GUI; if(argc > 1) { - ret_flags = cli_main(argc, argv, rgb_controllers, &profile_manager, &server, clients); + ret_flags = cli_main(argc, argv, rgb_controllers, &profile_manager, ResourceManager::get()->GetServer(), clients); } /*---------------------------------------------------------*\ @@ -185,7 +184,7 @@ int main(int argc, char* argv[]) if(clients.size() == 0) { - dlg.AddServerTab(&server); + dlg.AddServerTab(ResourceManager::get()->GetServer()); } dlg.AddClientTab();