mirror of
https://github.com/hyperion-project/hyperion.ng.git
synced 2025-03-01 10:33:28 +00:00
* Refactor to fix #1671 * Add GUI/NonGUI mode to info page * Do not show lock config, if in non-UI mode * Updae Changelog * Correct includes * Ensure key member initialization - RGB Channels * Ensure key member initialization - WebServer * Update RGBChannels * Fix initialization order * Fix key when inserting new logger in LoggerMap, Prepare logBuffer-JSON snapshot view in LoggerManager, Increase buffered loglines to 500 * Fix Memory leak in GrabberWrapper * Fix Memory leak in BlackBorderProcessor * Fix Memory leak in BlackBorderProcessor * use ninja generator under macos * Fix BGEffectHandler destruction * Fix Mdns code * Clear list after applying qDeleteAll * Fix deletion of CecHandler * Fix memory leak caused by wrong buffer allocation * Remove extra pixel consistently * Change mDNS to Qt SmartPointers * Correct removal * Fix usage of _width/_height (they are the output resolution, not the screen resolution) That avoids unnecessary resizing of the output image with every transferFrame call * Move main non Thread Objects to Smart Pointers * Revert "Move main non Thread Objects to Smart Pointers" This reverts commit 26102ca963982e2fbc4ffb8d4db6139f0128a3cc. * Add missing deletes * Revert MdnsBrowser chnage * Revert MdnsBrowser change * Fix memory leaks related standalone grabber * Address CodeQL finding * delete pointer OsxFrameGrabber --------- Co-authored-by: Paulchen-Panther <16664240+Paulchen-Panther@users.noreply.github.com>
87 lines
2.5 KiB
C++
87 lines
2.5 KiB
C++
#include <mdns/MdnsProvider.h>
|
|
#include <mdns/MdnsServiceRegister.h>
|
|
|
|
// Qt includes
|
|
#include <QHostInfo>
|
|
#include <QThread>
|
|
|
|
// Utility includes
|
|
#include <utils/Logger.h>
|
|
#include <HyperionConfig.h>
|
|
#include <hyperion/AuthManager.h>
|
|
|
|
namespace {
|
|
const bool verboseProvider = false;
|
|
} // End of constants
|
|
|
|
MdnsProvider::MdnsProvider(QObject* parent)
|
|
: QObject(parent)
|
|
, _log(Logger::getInstance("MDNS"))
|
|
, _server(nullptr)
|
|
, _hostname(nullptr)
|
|
{
|
|
}
|
|
|
|
void MdnsProvider::init()
|
|
{
|
|
_server.reset(new QMdnsEngine::Server());
|
|
_hostname.reset(new QMdnsEngine::Hostname(_server.data()));
|
|
|
|
connect(_hostname.data(), &QMdnsEngine::Hostname::hostnameChanged, this, &MdnsProvider::onHostnameChanged);
|
|
DebugIf(verboseProvider, _log, "Hostname [%s], isRegistered [%d]", _hostname->hostname().constData(), _hostname->isRegistered());
|
|
}
|
|
|
|
MdnsProvider::~MdnsProvider()
|
|
{
|
|
_providedServiceTypes.clear();
|
|
}
|
|
|
|
void MdnsProvider::publishService(const QString& serviceType, quint16 servicePort, const QByteArray& serviceName)
|
|
{
|
|
QByteArray type = MdnsServiceRegister::getServiceType(serviceType);
|
|
|
|
if (!type.isEmpty())
|
|
{
|
|
DebugIf(verboseProvider, _log, "Publish new mDNS serviceType [%s], Thread: %s", type.constData(), QSTRING_CSTR(QThread::currentThread()->objectName()));
|
|
|
|
if (!_providedServiceTypes.contains(type))
|
|
{
|
|
QSharedPointer<QMdnsEngine::Provider> newProvider = QSharedPointer<QMdnsEngine::Provider>::create(_server.data(), _hostname.data());
|
|
_providedServiceTypes.insert(type, newProvider);
|
|
|
|
}
|
|
|
|
QSharedPointer<QMdnsEngine::Provider> provider = _providedServiceTypes.value(type);
|
|
if (!provider.isNull())
|
|
{
|
|
QMdnsEngine::Service service;
|
|
service.setType(type);
|
|
service.setPort(servicePort);
|
|
|
|
QByteArray name(QHostInfo::localHostName().toUtf8());
|
|
if (!serviceName.isEmpty())
|
|
{
|
|
name.prepend(serviceName + "@");
|
|
}
|
|
service.setName(name);
|
|
|
|
QByteArray uuid = AuthManager::getInstance()->getID().toUtf8();
|
|
const QMap<QByteArray, QByteArray> attributes = {{"id", uuid}, {"version", HYPERION_VERSION}};
|
|
service.setAttributes(attributes);
|
|
|
|
DebugIf(verboseProvider, _log, "[%s], Name: [%s], Port: [%u] ", service.type().constData(), service.name().constData(), service.port());
|
|
|
|
provider->update(service);
|
|
}
|
|
else
|
|
{
|
|
Error(_log, "Not able to get hold of mDNS serviceType [%s]", type.constData());
|
|
}
|
|
}
|
|
}
|
|
|
|
void MdnsProvider::onHostnameChanged(const QByteArray& hostname)
|
|
{
|
|
DebugIf(verboseProvider, _log, "mDNS-hostname changed to hostname [%s]", hostname.constData());
|
|
}
|