|
| PublisherMDnsSd (StateCallback aCallback) |
|
void | UnpublishService (const std::string &aName, const std::string &aType, ResultCallback &&aCallback) override |
|
void | UnpublishHost (const std::string &aName, ResultCallback &&aCallback) override |
|
void | SubscribeService (const std::string &aType, const std::string &aInstanceName) override |
|
void | UnsubscribeService (const std::string &aType, const std::string &aInstanceName) override |
|
void | SubscribeHost (const std::string &aHostName) override |
|
void | UnsubscribeHost (const std::string &aHostName) override |
|
otbrError | Start (void) override |
|
bool | IsStarted (void) const override |
|
void | Stop (void) override |
|
void | Update (MainloopContext &aMainloop) override |
|
void | Process (const MainloopContext &aMainloop) override |
|
void | PublishService (const std::string &aHostName, const std::string &aName, const std::string &aType, const SubTypeList &aSubTypeList, uint16_t aPort, const TxtList &aTxtList, ResultCallback &&aCallback) |
|
void | PublishHost (const std::string &aName, const std::vector< Ip6Address > &aAddresses, ResultCallback &&aCallback) |
|
uint64_t | AddSubscriptionCallbacks (DiscoveredServiceInstanceCallback aInstanceCallback, DiscoveredHostCallback aHostCallback) |
|
void | RemoveSubscriptionCallbacks (uint64_t aSubscriberId) |
|
const MdnsTelemetryInfo & | GetMdnsTelemetryInfo () const |
|
|
otbrError | PublishServiceImpl (const std::string &aHostName, const std::string &aName, const std::string &aType, const SubTypeList &aSubTypeList, uint16_t aPort, const TxtList &aTxtList, ResultCallback &&aCallback) override |
|
otbrError | PublishHostImpl (const std::string &aName, const std::vector< Ip6Address > &aAddress, ResultCallback &&aCallback) override |
|
void | OnServiceResolveFailedImpl (const std::string &aType, const std::string &aInstanceName, int32_t aErrorCode) override |
|
void | OnHostResolveFailedImpl (const std::string &aHostName, int32_t aErrorCode) override |
|
otbrError | DnsErrorToOtbrError (int32_t aErrorCode) override |
|
void | AddServiceRegistration (ServiceRegistrationPtr &&aServiceReg) |
|
void | RemoveServiceRegistration (const std::string &aName, const std::string &aType, otbrError aError) |
|
ServiceRegistration * | FindServiceRegistration (const std::string &aName, const std::string &aType) |
|
void | OnServiceResolved (const std::string &aType, const DiscoveredInstanceInfo &aInstanceInfo) |
|
void | OnServiceResolveFailed (const std::string &aType, const std::string &aInstanceName, int32_t aErrorCode) |
|
void | OnServiceRemoved (uint32_t aNetifIndex, const std::string &aType, const std::string &aInstanceName) |
|
void | OnHostResolved (const std::string &aHostName, const DiscoveredHostInfo &aHostInfo) |
|
void | OnHostResolveFailed (const std::string &aHostName, int32_t aErrorCode) |
|
ResultCallback | HandleDuplicateServiceRegistration (const std::string &aHostName, const std::string &aName, const std::string &aType, const SubTypeList &aSubTypeList, uint16_t aPort, const TxtList &aTxtList, ResultCallback &&aCallback) |
|
ResultCallback | HandleDuplicateHostRegistration (const std::string &aName, const std::vector< Ip6Address > &aAddresses, ResultCallback &&aCallback) |
|
void | AddHostRegistration (HostRegistrationPtr &&aHostReg) |
|
void | RemoveHostRegistration (const std::string &aName, otbrError aError) |
|
HostRegistration * | FindHostRegistration (const std::string &aName) |
|
void | UpdateServiceRegistrationEmaLatency (const std::string &aInstanceName, const std::string &aType, otbrError aError) |
|
void | UpdateHostRegistrationEmaLatency (const std::string &aHostName, otbrError aError) |
|
void | UpdateServiceInstanceResolutionEmaLatency (const std::string &aInstanceName, const std::string &aType, otbrError aError) |
|
void | UpdateHostResolutionEmaLatency (const std::string &aHostName, otbrError aError) |
|
|
enum | State { State::kIdle,
State::kReady
} |
|
typedef std::vector< TxtEntry > | TxtList |
|
typedef std::vector< std::string > | SubTypeList |
|
typedef std::vector< Ip6Address > | AddressList |
|
using | DiscoveredServiceInstanceCallback = std::function< void(const std::string &aType, const DiscoveredInstanceInfo &aInstanceInfo)> |
|
using | DiscoveredHostCallback = std::function< void(const std::string &aHostName, const DiscoveredHostInfo &aHostInfo)> |
|
using | StateCallback = std::function< void(State aNewState)> |
|
using | ResultCallback = OnceCallback< void(otbrError aError)> |
|
static Publisher * | Create (StateCallback aCallback) |
|
static void | Destroy (Publisher *aPublisher) |
|
static otbrError | EncodeTxtData (const TxtList &aTxtList, std::vector< uint8_t > &aTxtData) |
|
static otbrError | DecodeTxtData (TxtList &aTxtList, const uint8_t *aTxtData, uint16_t aTxtLength) |
|
using | ServiceRegistrationPtr = std::unique_ptr< ServiceRegistration > |
|
using | ServiceRegistrationMap = std::map< std::string, ServiceRegistrationPtr > |
|
using | HostRegistrationPtr = std::unique_ptr< HostRegistration > |
|
using | HostRegistrationMap = std::map< std::string, HostRegistrationPtr > |
|
static SubTypeList | SortSubTypeList (SubTypeList aSubTypeList) |
|
static TxtList | SortTxtList (TxtList aTxtList) |
|
static AddressList | SortAddressList (AddressList aAddressList) |
|
static std::string | MakeFullServiceName (const std::string &aName, const std::string &aType) |
|
static std::string | MakeFullHostName (const std::string &aName) |
|
static void | UpdateMdnsResponseCounters (otbr::MdnsResponseCounters &aCounters, otbrError aError) |
|
static void | UpdateEmaLatency (uint32_t &aEmaLatency, uint32_t aLatency, otbrError aError) |
|
ServiceRegistrationMap | mServiceRegistrations |
|
HostRegistrationMap | mHostRegistrations |
|
uint64_t | mNextSubscriberId = 1 |
|
std::map< uint64_t, std::pair< DiscoveredServiceInstanceCallback, DiscoveredHostCallback > > | mDiscoveredCallbacks |
|
std::map< std::pair< std::string, std::string >, Timepoint > | mServiceRegistrationBeginTime |
|
std::map< std::string, Timepoint > | mHostRegistrationBeginTime |
|
std::map< std::pair< std::string, std::string >, Timepoint > | mServiceInstanceResolutionBeginTime |
|
std::map< std::string, Timepoint > | mHostResolutionBeginTime |
|
otbr::MdnsTelemetryInfo | mTelemetryInfo {} |
|
static constexpr uint8_t | kMaxTextEntrySize = 255 |
|
This class implements mDNS publisher with mDNSResponder.
void otbr::Mdns::PublisherMDnsSd::SubscribeService |
( |
const std::string & |
aType, |
|
|
const std::string & |
aInstanceName |
|
) |
| |
|
overridevirtual |
This method subscribes a given service or service instance.
If aInstanceName
is not empty, this method subscribes the service instance. Otherwise, this method subscribes the service. mDNS implementations should use the DiscoveredServiceInstanceCallback
function to notify discovered service instances.
- Note
- Discovery Proxy implementation guarantees no duplicate subscriptions for the same service or service instance.
- Parameters
-
[in] | aType | The service type. |
[in] | aInstanceName | The service instance to subscribe, or empty to subscribe the service. |
Implements otbr::Mdns::Publisher.