Refactor config API

This commit is contained in:
LordGrey
2024-08-01 23:07:18 +02:00
parent 4a5b0b6bf2
commit c86af5ce79
42 changed files with 1605 additions and 889 deletions

View File

@@ -9,15 +9,14 @@
HyperionIManager* HyperionIManager::HIMinstance;
HyperionIManager::HyperionIManager(const QString& rootPath, QObject* parent, bool readonlyMode)
HyperionIManager::HyperionIManager(QObject* parent)
: QObject(parent)
, _log(Logger::getInstance("HYPERION-INSTMGR"))
, _instanceTable( new InstanceTable(rootPath, this, readonlyMode) )
, _rootPath( rootPath )
, _readonlyMode(readonlyMode)
, _instanceTable( new InstanceTable())
{
HIMinstance = this;
qRegisterMetaType<InstanceState>("InstanceState");
_instanceTable->createDefaultInstance();
}
Hyperion* HyperionIManager::getHyperionInstance(quint8 instance)
@@ -45,14 +44,32 @@ QVector<QVariantMap> HyperionIManager::getInstanceData() const
return instances;
}
QString HyperionIManager::getInstanceName(quint8 inst)
{
return _instanceTable->getNamebyIndex(inst);
}
QList<quint8> HyperionIManager::getRunningInstanceIdx() const
{
return _runningInstances.keys();
}
QList<quint8> HyperionIManager::getInstanceIds() const
{
return _instanceTable->getAllInstanceIDs();
}
void HyperionIManager::startAll()
{
for(const auto & entry : _instanceTable->getAllInstances(true))
const QVector<QVariantMap> instances = _instanceTable->getAllInstances(true);
if (instances.isEmpty())
{
Error(_log, "No enabled instances found to be started");
return;
}
for(const auto & entry : instances)
{
startInstance(entry["instance"].toInt());
}
@@ -62,7 +79,7 @@ void HyperionIManager::stopAll()
{
// copy the instances due to loop corruption, even with .erase() return next iter
QMap<quint8, Hyperion*> instCopy = _runningInstances;
for(const auto instance : instCopy)
for(auto *const instance : instCopy)
{
instance->stop();
}
@@ -131,7 +148,7 @@ bool HyperionIManager::startInstance(quint8 inst, bool block, QObject* caller, i
{
QThread* hyperionThread = new QThread();
hyperionThread->setObjectName("HyperionThread");
Hyperion* hyperion = new Hyperion(inst, _readonlyMode);
Hyperion* hyperion = new Hyperion(inst);
hyperion->moveToThread(hyperionThread);
// setup thread management
connect(hyperionThread, &QThread::started, hyperion, &Hyperion::start);
@@ -156,7 +173,7 @@ bool HyperionIManager::startInstance(quint8 inst, bool block, QObject* caller, i
if(block)
{
while(!hyperionThread->isRunning()){};
while(!hyperionThread->isRunning()){}
}
if (!_pendingRequests.contains(inst) && caller != nullptr)
@@ -203,10 +220,10 @@ bool HyperionIManager::stopInstance(quint8 inst)
bool HyperionIManager::createInstance(const QString& name, bool start)
{
quint8 inst;
quint8 inst = 0;
if(_instanceTable->createInstance(name, inst))
{
Info(_log,"New Hyperion instance created with name '%s'",QSTRING_CSTR(name));
Info(_log,"New Hyperion instance [%d] created with name '%s'", inst, QSTRING_CSTR(name));
emit instanceStateChanged(InstanceState::H_CREATED, inst, name);
emit change();
@@ -221,7 +238,9 @@ bool HyperionIManager::deleteInstance(quint8 inst)
{
// inst 0 can't be deleted
if(!isInstAllowed(inst))
{
return false;
}
// stop it if required as blocking and wait
stopInstance(inst);