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