diff options
author | Remko Tronçon <git@el-tramo.be> | 2009-12-04 21:49:44 (GMT) |
---|---|---|
committer | Remko Tronçon <git@el-tramo.be> | 2009-12-04 23:52:36 (GMT) |
commit | 897ad55ffee76c9e84ffb174d700f6182a3e7d0b (patch) | |
tree | f31e6bd601cf5f1483a3f4ad5e79a492d3a9ca3e /Swiften/Network/CAresDomainNameResolver.h | |
parent | c8802e3bef6b73d349a711b187c72aea0a3dd964 (diff) | |
download | swift-contrib-897ad55ffee76c9e84ffb174d700f6182a3e7d0b.zip swift-contrib-897ad55ffee76c9e84ffb174d700f6182a3e7d0b.tar.bz2 |
Implemented CAresDomainNameResolver.
Diffstat (limited to 'Swiften/Network/CAresDomainNameResolver.h')
-rw-r--r-- | Swiften/Network/CAresDomainNameResolver.h | 34 |
1 files changed, 34 insertions, 0 deletions
diff --git a/Swiften/Network/CAresDomainNameResolver.h b/Swiften/Network/CAresDomainNameResolver.h new file mode 100644 index 0000000..0cdd163 --- /dev/null +++ b/Swiften/Network/CAresDomainNameResolver.h @@ -0,0 +1,34 @@ +#pragma once + +#include <ares.h> +#include <boost/thread.hpp> +#include <boost/thread/mutex.hpp> +#include <list> + +#include "Swiften/Network/DomainNameResolver.h" + +namespace Swift { + class CAresQuery; + + class CAresDomainNameResolver : public DomainNameResolver { + public: + CAresDomainNameResolver(); + ~CAresDomainNameResolver(); + + virtual boost::shared_ptr<DomainNameServiceQuery> createServiceQuery(const String& name); + virtual boost::shared_ptr<DomainNameAddressQuery> createAddressQuery(const String& name); + + private: + friend class CAresQuery; + + void run(); + void addToQueue(boost::shared_ptr<CAresQuery>); + + private: + bool stopRequested; + ares_channel channel; + boost::thread* thread; + boost::mutex pendingQueriesMutex; + std::list< boost::shared_ptr<CAresQuery> > pendingQueries; + }; +} |