DNSSDDeviceEnumerator.hpp
1 #pragma once
2 #include <Device/Protocol/ProtocolFactoryInterface.hpp>
3 
4 #include <ossia/detail/config.hpp>
5 
6 #include <ossia/detail/flat_set.hpp>
7 
8 #if defined(OSSIA_DNSSD)
9 #include <servus/listener.h>
10 #include <servus/servus.h>
11 #endif
12 
13 namespace Protocols
14 {
15 #if defined(OSSIA_DNSSD)
18  , public servus::Listener
19 {
20 public:
21  explicit DNSSDEnumerator(const std::string& service);
22  virtual ~DNSSDEnumerator();
23 
24  void start();
25 
26  void enumerate(std::function<void(const QString&, const Device::DeviceSettings&)> f)
27  const override;
28  void timerEvent(QTimerEvent* ev) override;
29 
30  void instanceAdded(const std::string& instance) override;
31  void instanceRemoved(const std::string& instance) override;
32 
33  virtual void addNewDevice(
34  const std::string& instance, const std::string& ip,
35  const std::string& port) noexcept
36  = 0;
37 
38 protected:
39  servus::Servus m_serv;
40  ossia::flat_set<std::string> m_instances;
41 
42 private:
43  int m_timer{-1};
44 };
45 #endif
46 }
Definition: ProtocolFactoryInterface.hpp:28
Definition: DNSSDDeviceEnumerator.hpp:19
Definition: DeviceSettings.hpp:16