#ifndef GB_GBDNS_H
#define GB_GBDNS_H

#include <vector>
#include <string>
#include <netinet/in.h>

namespace GbDns {
	struct DnsResponse {
		DnsResponse();

		std::vector<in_addr_t> m_ips;
		std::vector<std::string> m_nameservers;
		int m_errno;
	};

	bool initialize();
	bool initializeSettings();

	void finalize();

	void getARecord(const char *hostname, size_t hostnameLen, void (*callback)(DnsResponse *response, void *state), void *state);
	void getNSRecord(const char *hostname, size_t hostnameLen, void (*callback)(DnsResponse *response, void *state), void *state);

	void makeCallbacks();
};


#endif //GB_GBDNS_H