24#ifndef _NETCOMM_UTILS_RESOLVER_THREAD_H_
25#define _NETCOMM_UTILS_RESOLVER_THREAD_H_
27#include <core/threading/thread.h>
28#include <core/utils/lock_hashmap.h>
29#include <core/utils/lock_hashset.h>
30#include <utils/misc/string_compare.h>
32# include <netcomm/dns-sd/avahi_resolver_handler.h>
34#include <netinet/in.h>
35#include <sys/socket.h>
47class NetworkNameResolver;
51class NetworkNameResolverThread :
public Thread,
public AvahiResolverHandler
88 Mutex * namesq_mutex_;
89 unsigned int namesq_active_;
91 NamesQMap namesqs_[2];
93 NamesQMap * namesq_proc_;
96 unsigned int addrq_active_;
97 typedef std::list<struct sockaddr *> AddrQList;
100 AddrQList * addrq_proc_;
Mutex mutual exclusion lock.
Worker thread for NetworkNameResolver.
~NetworkNameResolverThread()
Destructor.
virtual void address_resolution_failed(struct sockaddr *addr, socklen_t addrlen)
Address resolution failed.
bool resolve_name_immediately(const std::string &name, struct sockaddr **addr, socklen_t *addr_len)
Immediately resolve a name.
void resolve_name(const std::string &name)
Enqueue name for resolution.
void resolve_address(struct sockaddr *addr, socklen_t addrlen)
Enqueue address for resolution.
virtual void loop()
Thread loop.
virtual void name_resolution_failed(char *name)
Name resolution failed.
NetworkNameResolverThread(NetworkNameResolver *resolver, AvahiThread *avahi_thread=NULL)
Constructor.
virtual void run()
Stub to see name in backtrace for easier debugging.
virtual void resolved_name(char *name, struct sockaddr *addr, socklen_t addrlen)
Name has been successfully resolved.
bool resolve_address_immediately(struct sockaddr *addr, std::string &name, bool &namefound)
Immediately resolve address.
virtual void resolved_address(struct sockaddr *addr, socklen_t addrlen, char *name)
Address has been successfully resolved.
Network name and address resolver.
Thread class encapsulation of pthreads.
const char * name() const
Get name of thread.
virtual void run()
Code to execute in the thread.
Fawkes library namespace.