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