OSSIA
Open Scenario System for Interactive Application
ossia-pd/src/ZeroconfOscqueryListener.hpp
1 #pragma once
2 
3 #include <ossia/network/generic/generic_device.hpp>
4 
5 #include <servus/servus.h>
6 
7 #include <m_pd.h>
8 
9 #include <memory>
10 
11 namespace ossia::pd
12 {
13 class ZeroconfOscqueryListener final : servus::Listener
14 {
15 public:
16  ZeroconfOscqueryListener();
17  ~ZeroconfOscqueryListener() override;
18 
19  static ossia::net::generic_device* find_device(const std::string& name);
20 
21  void browse();
22 
23 private:
24  void instanceAdded(const std::string& instance) final override;
25  void instanceRemoved(const std::string& instance) final override;
26 
27  static std::vector<std::shared_ptr<ossia::net::generic_device>> m_devices;
28  static std::vector<std::string> m_zombie_devices;
29 
30  servus::Servus service;
31  static std::mutex m_mutex;
32 };
33 
34 } // namespace ossia