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_hashset.h> 29 #include <core/utils/lock_hashmap.h> 30 #include <utils/misc/string_compare.h> 32 #include <netcomm/dns-sd/avahi_resolver_handler.h> 34 #include <sys/socket.h> 35 #include <netinet/in.h> 46 class NetworkNameResolver;
50 class NetworkNameResolverThread :
public Thread,
public AvahiResolverHandler
64 struct sockaddr **addr, socklen_t *addr_len);
67 virtual void resolved_name(
char *name,
struct sockaddr *addr, socklen_t addrlen);
68 virtual void resolved_address(
struct sockaddr *addr, socklen_t addrlen,
char *name);
83 Mutex *__namesq_mutex;
84 unsigned int __namesq_active;
86 NamesQMap __namesqs[2];
88 NamesQMap *__namesq_proc;
92 unsigned int __addrq_active;
93 typedef std::list<struct sockaddr *> AddrQList;
94 AddrQList __addrqs[2];
96 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.