JD2022-TU1/main/extern/Hue/libhuestream/huestream/config/HueConfig.cpp

91 lines
4.1 KiB
C++
Raw Blame History

/*******************************************************************************
Copyright <20> 2017 Philips Lighting Holding B.V.
All Rights Reserved.
********************************************************************************/
#include <huestream/common/http/Http.h>
#include <huestream/connect/FileStorageAccessor.h>
#include <huestream/common/time/TimeManager.h>
#include <huestream/stream/UDPConnector.h>
#include <huestream/stream/DTLSConnector.h>
#include <huestream/common/language/DummyTranslator.h>
#include <huestream/stream/DefaultEntropyProvider.h>
#include "HueConfig.h"
namespace huestream {
static HueConfigPtr instance = make_shared<HueConfig>();
PROP_IMPL(HueConfig, HueSettingsPtr, hueSettings, HueSettings);
PROP_IMPL(HueConfig, AppSettingsPtr, appSettings, AppSettings);
PROP_IMPL(HueConfig, HttpPtr, http, Http);
PROP_IMPL(HueConfig, BridgeStorageAccessorPtr, storageAccessor, StorageAccessor);
PROP_IMPL(HueConfig, MessageDispatcherPtr, dispatcher, Dispatcher);
PROP_IMPL(HueConfig, HueConnectPtr, hueConnect, HueConnect);
PROP_IMPL(HueConfig, TimeManagerPtr, timeManager, TimeManager);
PROP_IMPL(HueConfig, EnginePtr, engine, Engine);
PROP_IMPL(HueConfig, BridgePtr, activeBridge, ActiveBridge);
PROP_IMPL(HueConfig, StreamRenderCallback, streamRenderCallback, StreamRenderCallback);
PROP_IMPL(HueConfig, StreamPtr, stream, Stream);
PROP_IMPL(HueConfig, FeedbackMessageCallback, feedbackMessageCallback, FeedbackMessageCallback);
PROP_IMPL(HueConfig, HueCallbackHandlerPtr, callbackHandler, CallbackHandler);
PROP_IMPL(HueConfig, ConnectorPtr, connector, Connector);
PROP_IMPL(HueConfig, TranslatorPtr, translator, Translator);
PROP_IMPL(HueConfig, EntropyProviderBasePtr, entropyProvider, EntropyProvider);
HueConfigPtr HueConfig::GetInstance() {
return instance;
}
void HueConfig::InitializeDefaultConfig(const std::string &name, const std::string &platform, const std::string &language, const std::string &region) {
InitializeBase(name, platform, language, region);
instance->SetConnector(std::make_shared<DTLSConnector>());
}
void HueConfig::InitializeWithUDP(const std::string &name, const std::string &platform, const std::string &language, const std::string &region) {
InitializeBase(name, platform, language, region);
instance->SetConnector(std::make_shared<UDPConnector>());
};
void HueConfig::InitializeBase(const std::string &name, const std::string &platform, const std::string &language, const std::string &region) {
auto hueSettings = std::make_shared<HueSettings>();
instance->SetHueSettings(hueSettings);
auto appSettings = std::make_shared<AppSettings>();
appSettings->SetName(name);
appSettings->SetPlatform(platform);
appSettings->SetLanguage(language);
appSettings->SetRegion(region);
instance->SetAppSettings(appSettings);
instance->SetActiveBridge(std::make_shared<Bridge>());
instance->SetDispatcher(std::make_shared<MessageDispatcher>());
instance->GetDispatcher()->Execute();
instance->SetHttp(std::make_shared<Http>());
instance->SetStorageAccessor(std::make_shared<FileStorageAccessor>("bridge.json"));
instance->SetHueConnect(std::make_shared<HueConnect>());
instance->SetTimeManager(std::make_shared<TimeManager>());
instance->SetEngine(std::make_shared<Engine>());
instance->SetStream(std::make_shared<Stream>());
instance->SetTranslator(std::make_shared<DummyTranslator>());
instance->SetEntropyProvider(std::make_shared<DefaultEntropyProvider>());
}
void HueConfig::TearDown() {
instance->SetHueSettings(nullptr);
instance->SetAppSettings(nullptr);
instance->SetActiveBridge(nullptr);
if (instance->GetDispatcher() != nullptr) {
instance->GetDispatcher()->Stop();
instance->SetDispatcher(nullptr);
}
instance->SetHttp(nullptr);
instance->SetStorageAccessor(nullptr);
instance->SetHueConnect(nullptr);
instance->SetConnector(nullptr);
instance->SetTimeManager(nullptr);
instance->SetEngine(nullptr);
instance->SetStream(nullptr);
instance->SetTranslator(nullptr);
instance->SetEntropyProvider(nullptr);
}
}