summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRemko Tronçon <git@el-tramo.be>2009-12-04 21:49:44 (GMT)
committerRemko Tronçon <git@el-tramo.be>2009-12-04 23:52:36 (GMT)
commit897ad55ffee76c9e84ffb174d700f6182a3e7d0b (patch)
treef31e6bd601cf5f1483a3f4ad5e79a492d3a9ca3e /Swiften/Network/CAresDomainNameResolver.h
parentc8802e3bef6b73d349a711b187c72aea0a3dd964 (diff)
downloadswift-897ad55ffee76c9e84ffb174d700f6182a3e7d0b.zip
swift-897ad55ffee76c9e84ffb174d700f6182a3e7d0b.tar.bz2
Implemented CAresDomainNameResolver.
Diffstat (limited to 'Swiften/Network/CAresDomainNameResolver.h')
-rw-r--r--Swiften/Network/CAresDomainNameResolver.h34
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;
+ };
+}