#pragma once #include "screencast/network/error.h" #include #include #include #include namespace sc { struct DiscoveredPeer { std::string service_name; std::string host; uint16_t signaling_port = 0; }; class DiscoveryService { public: using PeerCallback = std::function; virtual ~DiscoveryService() = default; // Announce this peer on the LAN. virtual bool announce(const std::string& service_name, uint16_t signaling_port) = 0; // Browse for peers; callback is invoked for each newly found service. virtual bool browse(PeerCallback on_peer) = 0; virtual void stop() = 0; // Diagnostic message from the last failure (empty if none). virtual std::string last_error() const = 0; }; class DiscoveryFactory { public: static NetworkResult> create_avahi(); }; } // namespace sc