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> 47 class NetworkNameResolver;
51 class 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_;
NetworkNameResolverThread(NetworkNameResolver *resolver, AvahiThread *avahi_thread=NULL)
Constructor.
void resolve_address(struct sockaddr *addr, socklen_t addrlen)
Enqueue address for resolution.
virtual void name_resolution_failed(char *name)
Name resolution failed.
Fawkes library namespace.
virtual void run()
Code to execute in the thread.
Thread class encapsulation of pthreads.
Worker thread for NetworkNameResolver.
virtual void resolved_name(char *name, struct sockaddr *addr, socklen_t addrlen)
Name has been successfully resolved.
void resolve_name(const std::string &name)
Enqueue name for resolution.
const char * name() const
Get name of thread.
~NetworkNameResolverThread()
Destructor.
Network name and address resolver.
virtual void resolved_address(struct sockaddr *addr, socklen_t addrlen, char *name)
Address has been successfully resolved.
virtual void address_resolution_failed(struct sockaddr *addr, socklen_t addrlen)
Address resolution failed.
Mutex mutual exclusion lock.
virtual void run()
Stub to see name in backtrace for easier debugging.
bool resolve_address_immediately(struct sockaddr *addr, std::string &name, bool &namefound)
Immediately resolve address.
bool resolve_name_immediately(const std::string &name, struct sockaddr **addr, socklen_t *addr_len)
Immediately resolve a name.
virtual void loop()
Thread loop.