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