+/** This class is used to resolve server hostnames during /connect and autoconnect.
+ * As of 1.1, the resolver system is seperated out from BufferedSocket, so we must do this
+ * resolver step first ourselves if we need it. This is totally nonblocking, and will
+ * callback to OnLookupComplete or OnError when completed. Once it has completed we
+ * will have an IP address which we can then use to continue our connection.
+ */
+class ServernameResolver : public Resolver
+{
+ private:
+ /** A copy of the Link tag info for what we're connecting to.
+ * We take a copy, rather than using a pointer, just in case the
+ * admin takes the tag away and rehashes while the domain is resolving.
+ */
+ Link MyLink;
+ SpanningTreeUtilities* Utils;
+ QueryType query;
+ std::string host;
+ Module* mine;
+ public:
+ ServernameResolver(Module* me, SpanningTreeUtilities* Util, InspIRCd* Instance, const std::string &hostname, Link x, bool &cached, QueryType qt);
+ void OnLookupComplete(const std::string &result, unsigned int ttl, bool cached, int resultnum = 0);
+ void OnError(ResolverError e, const std::string &errormessage);
+};
+