4#ifndef _Stroika_Frameworks_UPnP_SSDP_Server_SearchResponder_h_
5#define _Stroika_Frameworks_UPnP_SSDP_Server_SearchResponder_h_ 1
7#include "Stroika/Frameworks/StroikaPreComp.h"
10#include "Stroika/Foundation/Common/Common.h"
16#include "Stroika/Frameworks/UPnP/Device.h"
19#include "Stroika/Frameworks/UPnP/SSDP/Server/LocationProvider.h"
27namespace Stroika::Frameworks::UPnP::SSDP::Server {
29 using Traversal::Iterable;
77 bool fFollowNetworkChanges{
true};
79 static const Options kDefaultOptions;
106 unique_ptr<Execution::WaitForIOReady_Support::EventFD> fJoinAgain_{Execution::WaitForIOReady_Support::mkEventFD ()};
108 optional<SSDP::Private_::NetworkChangeFollower> fNetworkChanges_;
118#include "SearchResponder.inl"
bool DefaultInterfaceFilter(const Foundation::IO::Network::Interface &i)
SSDP's default InterfaceFilter: an interface that is running, and not loopback (whose multicast suppo...
function< bool(const Foundation::IO::Network::Interface &i)> InterfaceFilter
Which network interfaces SSDP is to talk on - asked of each interface every time SSDP lists them,...
a cross between Mapping<KEY, T> and Collection<T> and Set<T>
Wrap any object with Synchronized<> and it can be used similarly to the base type,...
Iterable<T> is a base class for containers which easily produce an Iterator<T> to traverse them.
nonvirtual IO::Network::InterfacesByID GetNetworkInterfaces() const
The network interfaces it is listening for searches on now - as they were when it joined them (so wit...