Back to Site
Loading...
Searching...
No Matches
mdns_discovery.h
Go to the documentation of this file.
1#pragma once
2
14#include "util/rats_export.h"
15#include "node/peer_network.h"
16#include "mdns/mdns.h"
17
18#include <atomic>
19#include <memory>
20#include <mutex>
21#include <string>
22#include <unordered_set>
23
24namespace librats {
25
26class RATS_API MdnsDiscovery final : public Subsystem {
27public:
28 struct Config {
29 std::string instance_name = "";
30 };
31
33 explicit MdnsDiscovery(Config config);
34 ~MdnsDiscovery() override;
35
36 void attach(NodeContext& ctx) override;
37 void start() override;
38 void stop() override;
39
40 bool is_running() const;
41
42private:
43 void on_service(const MdnsService& service, bool is_new);
44
45 Config config_;
46 std::string instance_;
47 PeerNetwork* network_ = nullptr;
48 std::unique_ptr<MdnsClient> mdns_;
49 std::atomic<bool> running_{false};
50
51 std::mutex dialed_mutex_;
52 std::unordered_set<Address> dialed_;
53};
54
55} // namespace librats
void attach(NodeContext &ctx) override
void start() override
void stop() override
bool is_running() const
MdnsDiscovery(Config config)
A pluggable network subsystem.
Definition node.h:66
The narrow contract a subsystem needs from the node — and nothing more.