|
join 1.0
lightweight network framework library
|
mDNS peer. More...
#include <nameserver.hpp>


Classes | |
| struct | PendingRequest |
| pending synchronous request. More... | |
Public Types | |
| using | Socket = typename BasicDatagramNameServer<Protocol>::Socket |
| using | Endpoint = typename BasicDatagramNameServer<Protocol>::Endpoint |
| using | DnsNotify = std::function<void (const DnsPacket&)> |
| DNS notification callback type. | |
Public Types inherited from join::BasicDatagramNameServer< Protocol > | |
| using | Socket = typename Protocol::Socket |
| using | Endpoint = typename Protocol::Endpoint |
Public Member Functions | |
| BasicDatagramPeer (unsigned int ifindex, Reactor &reactor=ReactorThread::reactor()) | |
| construct the mDNS peer instance. | |
| BasicDatagramPeer (const std::string &interface, Reactor &reactor=ReactorThread::reactor()) | |
| construct the mDNS peer instance. | |
| BasicDatagramPeer (const BasicDatagramPeer &other)=delete | |
| copy constructor. | |
| BasicDatagramPeer & | operator= (const BasicDatagramPeer &other)=delete |
| copy assignment operator. | |
| BasicDatagramPeer (BasicDatagramPeer &&other)=delete | |
| move constructor. | |
| BasicDatagramPeer & | operator= (BasicDatagramPeer &&other)=delete |
| move assignment operator. | |
| virtual | ~BasicDatagramPeer () noexcept=default |
| destroy instance. | |
| int | bind (int family) noexcept |
| bind the socket to specified address family. | |
| int | probe (const std::vector< ResourceRecord > &records) |
| probe the local network for the presence of a service. | |
| int | announce (const std::vector< ResourceRecord > &records) |
| announce the presence of a service on the local network. | |
| int | goodbye (const std::vector< ResourceRecord > &records) |
| send a goodbye message. | |
| int | browse (const std::string &serviceType) |
| browse for services on the local network. | |
| IpAddressList | resolveAllAddress (const std::string &host, int family, std::chrono::milliseconds timeout=std::chrono::seconds(5)) |
| resolve host name and return all IP addresses found. | |
| IpAddressList | resolveAllAddress (const std::string &host, std::chrono::milliseconds timeout=std::chrono::seconds(5)) |
| resolve host name and return all IP addresses found. | |
| IpAddress | resolveAddress (const std::string &host, int family, std::chrono::milliseconds timeout=std::chrono::seconds(5)) |
| resolve host name using address family. | |
| IpAddress | resolveAddress (const std::string &host, std::chrono::milliseconds timeout=std::chrono::seconds(5)) |
| resolve host name. | |
| AliasList | resolveAllName (const IpAddress &address, std::chrono::milliseconds timeout=std::chrono::seconds(5)) |
| resolve all host address. | |
| std::string | resolveName (const IpAddress &address, std::chrono::milliseconds timeout=std::chrono::seconds(5)) |
| resolve host address. | |
| virtual void | onAnnouncement (const DnsPacket &packet)=0 |
| method called when a DNS query is received. | |
Public Member Functions inherited from join::BasicDatagramNameServer< Protocol > | |
| BasicDatagramNameServer (Reactor &reactor=ReactorThread::reactor()) | |
| construct the name server instance. | |
| BasicDatagramNameServer (const BasicDatagramNameServer &other)=delete | |
| copy constructor. | |
| BasicDatagramNameServer & | operator= (const BasicDatagramNameServer &other)=delete |
| copy assignment operator. | |
| BasicDatagramNameServer (BasicDatagramNameServer &&other)=delete | |
| move constructor. | |
| BasicDatagramNameServer & | operator= (BasicDatagramNameServer &&other)=delete |
| move assignment operator. | |
| virtual | ~BasicDatagramNameServer () noexcept=default |
| destroy instance. | |
| virtual int | bind (const Endpoint &endpoint) noexcept override |
| bind the socket to the given endpoint and register with the reactor. | |
| virtual void | close () noexcept override |
| close the socket and unregister from the reactor. | |
| int | reply (const DnsPacket &query, const std::vector< ResourceRecord > &answers={}, const std::vector< ResourceRecord > &authorities={}, const std::vector< ResourceRecord > &additionals={}, uint16_t rcode=0) |
| reply to a DNS query. | |
| virtual void | onQuery (const DnsPacket &packet)=0 |
| method called when a DNS query is received. | |
Public Member Functions inherited from join::EventHandler | |
| EventHandler ()=default | |
| create instance. | |
| EventHandler (const EventHandler &other)=default | |
| copy constructor. | |
| EventHandler & | operator= (const EventHandler &other)=default |
| copy assignment operator. | |
| EventHandler (EventHandler &&other)=default | |
| move constructor. | |
| EventHandler & | operator= (EventHandler &&other)=default |
| move assignment operator. | |
| virtual | ~EventHandler ()=default |
| destroy instance. | |
Public Attributes | |
| DnsNotify | onSuccess |
| callback called when a lookup sequence succeed. | |
| DnsNotify | onFailure |
| callback called when a lookup sequence failed. | |
Protected Member Functions | |
| void | onReadable (int fd) override final |
| method called when data are ready to be read on handle. | |
| void | notify (const DnsNotify &func, const DnsPacket &packet) const noexcept |
| safe way to notify DNS events. | |
| int | query (DnsPacket &packet, std::chrono::milliseconds timeout) |
| serialize and send a DNS query, waiting for a response. | |
Protected Member Functions inherited from join::BasicDatagramNameServer< Protocol > | |
| int | send (DnsPacket &packet) |
| serialize and send a DNS packet. | |
Protected Member Functions inherited from join::EventHandler | |
| virtual void | onWriteable (int fd) |
| method called when data are ready to be written on handle. | |
| virtual void | onClose (int fd) |
| method called when handle was closed by the peer. | |
| virtual void | onError (int fd) |
| method called when an error occurred on handle. | |
Protected Attributes | |
| unsigned int | _ifindex |
| interface index. | |
| std::unordered_map< uint16_t, std::unique_ptr< PendingRequest > > | _pending |
| synchronous requests indexed by sequence number. | |
| Mutex | _syncMutex |
| protection mutex. | |
Protected Attributes inherited from join::BasicDatagramNameServer< Protocol > | |
| DnsMessage | _message |
| DNS message codec. | |
| Reactor & | _reactor |
| event loop reactor. | |
| std::unique_ptr< char[]> | _buffer |
| reception buffer. | |
Additional Inherited Members | |
Static Protected Attributes inherited from join::BasicDatagramNameServer< Protocol > | |
| static constexpr size_t | _headerSize = 12 |
| DNS message header size. | |
mDNS peer.
| using join::BasicDatagramPeer< Protocol >::DnsNotify = std::function<void (const DnsPacket&)> |
DNS notification callback type.
| using join::BasicDatagramPeer< Protocol >::Endpoint = typename BasicDatagramNameServer<Protocol>::Endpoint |
| using join::BasicDatagramPeer< Protocol >::Socket = typename BasicDatagramNameServer<Protocol>::Socket |
|
inlineexplicit |
construct the mDNS peer instance.
| ifindex | interface index. |
| reactor | event loop reactor. |
|
inlineexplicit |
construct the mDNS peer instance.
| interface | interface name. |
| reactor | event loop reactor. |
|
delete |
copy constructor.
| other | other object to copy. |
|
delete |
move constructor.
| other | other object to move. |
|
virtualdefaultnoexcept |
destroy instance.
|
inline |
announce the presence of a service on the local network.
| records | resource records to announce. |
|
inlinenoexcept |
bind the socket to specified address family.
| family | address family. |
|
inline |
browse for services on the local network.
| serviceType | service type to browse for (e.g. "_http._tcp.local"). |
|
inline |
send a goodbye message.
| records | resource records to send in goodbye message. |
|
inlineprotectednoexcept |
safe way to notify DNS events.
| func | function to call. |
| packet | DNS packet. |
|
pure virtual |
method called when a DNS query is received.
| packet | parsed DNS query received. |
|
inlinefinaloverrideprotectedvirtual |
method called when data are ready to be read on handle.
| fd | file descriptor. |
Reimplemented from join::BasicDatagramNameServer< Protocol >.
|
delete |
move assignment operator.
| other | other object to move. |
|
delete |
copy assignment operator.
| other | other object to copy. |
|
inline |
probe the local network for the presence of a service.
| records | resource records to query for. |
|
inlineprotected |
serialize and send a DNS query, waiting for a response.
| packet | DNS packet to send, filled with the response on success |
| timeout | query timeout. |
|
inline |
resolve host name using address family.
| host | host name to resolve. |
| family | address family. |
| timeout | timeout in milliseconds (default: 5000). |
|
inline |
resolve host name.
| host | host name to resolve. |
| timeout | timeout in milliseconds (default: 5000). |
|
inline |
resolve host name and return all IP addresses found.
| host | host name to resolve. |
| family | address family. |
| timeout | timeout in milliseconds (default: 5000). |
|
inline |
resolve host name and return all IP addresses found.
| host | host name to resolve. |
| timeout | timeout in milliseconds (default: 5000). |
|
inline |
resolve all host address.
| address | host address to resolve. |
| timeout | timeout in milliseconds (default: 5000). |
|
inline |
resolve host address.
| address | host address to resolve. |
| timeout | timeout in milliseconds (default: 5000). |
|
protected |
interface index.
|
protected |
synchronous requests indexed by sequence number.
|
protected |
protection mutex.
| DnsNotify join::BasicDatagramPeer< Protocol >::onFailure |
callback called when a lookup sequence failed.
| DnsNotify join::BasicDatagramPeer< Protocol >::onSuccess |
callback called when a lookup sequence succeed.