From 2f93a2e442c251d0d9de5e828a66acd40086e28d Mon Sep 17 00:00:00 2001 From: "Nicolas \"Pixel\" Noble" Date: Thu, 7 Aug 2014 15:51:33 -0700 Subject: Adding full c-ares support into Balau - untested. --- includes/TaskMan.h | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) (limited to 'includes/TaskMan.h') diff --git a/includes/TaskMan.h b/includes/TaskMan.h index e928907..16944a7 100644 --- a/includes/TaskMan.h +++ b/includes/TaskMan.h @@ -21,6 +21,8 @@ namespace gnu = __gnu_cxx; #endif +struct ares_channeldata; + namespace Balau { class TaskScheduler; @@ -67,6 +69,9 @@ class TaskMan { template static T * registerTask(T * t, Events::TaskEvent * event) { TaskMan::iRegisterTask(t, NULL, event); return t; } + typedef std::function AresHostCallback; + void getHostByName(const Balau::String & name, int family, AresHostCallback callback); + private: static void iRegisterTask(Task * t, Task * stick, Events::TaskEvent * event); static void registerAsyncOp(AsyncOperation * op); @@ -105,6 +110,7 @@ class TaskMan { int m_stopCode = 0; bool m_stopped = false; bool m_allowedToSignal = false; + ev::timer m_curlTimer; CURLM * m_curlMulti = NULL; int m_curlStillRunning = 0; @@ -118,6 +124,17 @@ class TaskMan { void registerCurlHandle(CurlTask * curlTask); void unregisterCurlHandle(CurlTask * curlTask); + struct ares_channeldata * m_aresChannel = NULL; + static const int ARES_MAX_SOCKETS = 2; + curl_socket_t m_aresSockets[ARES_MAX_SOCKETS]; + ev::io * m_aresSocketEvents[ARES_MAX_SOCKETS]; + ev::timer m_aresTimer; + static void aresSocketCallbackStatic(void * data, curl_socket_t s, int read, int write); + void aresSocketCallback(curl_socket_t s, int read, int write); + void aresSocketEventCallback(ev::io & w, int revents); + void aresTimerEventCallback(ev::timer & w, int revents); + static void aresHostCallback(void * arg, int status, int timeouts, struct hostent * hostent); + TaskMan(const TaskMan &) = delete; TaskMan & operator=(const TaskMan &) = delete; }; -- cgit v1.2.3