mirror of
				https://github.com/hyperion-project/hyperion.ng.git
				synced 2025-03-01 10:33:28 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			69 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			69 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
#pragma once
 | 
						|
// qt incl
 | 
						|
#include <QObject>
 | 
						|
#include <QMap>
 | 
						|
#include <QHostInfo>
 | 
						|
 | 
						|
#include <bonjour/bonjourrecord.h>
 | 
						|
 | 
						|
class BonjourServiceBrowser;
 | 
						|
class BonjourServiceResolver;
 | 
						|
class QTimer;
 | 
						|
 | 
						|
class BonjourBrowserWrapper : public QObject
 | 
						|
{
 | 
						|
	Q_OBJECT
 | 
						|
private:
 | 
						|
	friend class HyperionDaemon;
 | 
						|
	///
 | 
						|
	/// @brief Browse for hyperion services in bonjour, constructed from HyperionDaemon
 | 
						|
	///        Searching for hyperion http service by default
 | 
						|
	///
 | 
						|
	BonjourBrowserWrapper(QObject * parent = 0);
 | 
						|
 | 
						|
public:
 | 
						|
 | 
						|
	///
 | 
						|
	/// @brief Browse for a service
 | 
						|
	///
 | 
						|
	bool browseForServiceType(const QString &serviceType);
 | 
						|
	///
 | 
						|
	/// @brief Get all available sessions
 | 
						|
	///
 | 
						|
	QMap<QString,BonjourRecord> getAllServices() { return _hyperionSessions; };
 | 
						|
 | 
						|
	static BonjourBrowserWrapper* instance;
 | 
						|
	static BonjourBrowserWrapper* getInstance(){ return instance; };
 | 
						|
 | 
						|
signals:
 | 
						|
	///
 | 
						|
	/// @brief Emits whenever a change happend
 | 
						|
	///
 | 
						|
	void browserChange(const QMap<QString,BonjourRecord>& bRegisters);
 | 
						|
 | 
						|
private:
 | 
						|
	/// map of service names and browsers
 | 
						|
	QMap< QString, BonjourServiceBrowser* > _browsedServices;
 | 
						|
	/// Resolver
 | 
						|
	BonjourServiceResolver* _bonjourResolver;
 | 
						|
 | 
						|
	// contains all current active service sessions
 | 
						|
	QMap<QString,BonjourRecord> _hyperionSessions;
 | 
						|
 | 
						|
	QString                _bonjourCurrentServiceToResolve;
 | 
						|
	/// timer to resolve changes
 | 
						|
	QTimer* _timerBonjourResolver;
 | 
						|
 | 
						|
private slots:
 | 
						|
	///
 | 
						|
	/// @brief is called whenever a BonjourServiceBrowser emits change
 | 
						|
	void currentBonjourRecordsChanged(const QList<BonjourRecord> &list);
 | 
						|
	/// @brief new record resolved
 | 
						|
	void bonjourRecordResolved(const QHostInfo &hostInfo, int port);
 | 
						|
 | 
						|
	///
 | 
						|
	/// @brief timer slot which updates regularly entries
 | 
						|
	///
 | 
						|
	void bonjourResolve();
 | 
						|
};
 |