]> git.tdb.fi Git - libs/net.git/blobdiff - source/net/resolve.cpp
Use nullptr instead of 0 for pointers
[libs/net.git] / source / net / resolve.cpp
index 992973a01dea4f73c51b54600748b0015ce0542b..e06bce77775e49fdd18569d12d79fec1f9739c0b 100644 (file)
@@ -1,9 +1,4 @@
-#ifdef WIN32
-#define _WIN32_WINNT 0x0501
-#include <ws2tcpip.h>
-#else
-#include <netdb.h>
-#endif
+#include "platform_api.h"
 #include <msp/core/systemerror.h>
 #include <msp/strings/format.h>
 #include "sockaddr_private.h"
@@ -45,16 +40,16 @@ namespace Net {
 
 SockAddr *resolve(const string &host, const string &serv, Family family)
 {
-       const char *chost = (host.empty() ? 0 : host.c_str());
-       const char *cserv = (serv.empty() ? 0 : serv.c_str());
+       const char *chost = (host.empty() ? nullptr : host.c_str());
+       const char *cserv = (serv.empty() ? nullptr : serv.c_str());
        int flags = 0;
        if(host=="*")
        {
                flags = AI_PASSIVE;
-               chost = 0;
+               chost = nullptr;
        }
 
-       addrinfo hints = { flags, family_to_sys(family), 0, 0, 0, 0, 0, 0 };
+       addrinfo hints = { flags, family_to_sys(family), 0, 0, 0, nullptr, nullptr, nullptr };
        addrinfo *res;
 
        int err = getaddrinfo(chost, cserv, &hints, &res);
@@ -70,7 +65,7 @@ SockAddr *resolve(const string &host, const string &serv, Family family)
                return addr;
        }
        else
-#ifdef WIN32
+#ifdef _WIN32
                throw system_error("getaddrinfo", WSAGetLastError());
 #else
                throw system_error("getaddrinfo", gai_strerror(err));
@@ -86,9 +81,7 @@ SockAddr *resolve(const string &str, Family family)
 }
 
 
-Resolver::Resolver():
-       event_disp(0),
-       next_tag(1)
+Resolver::Resolver()
 {
        thread.get_notify_pipe().signal_data_available.connect(sigc::mem_fun(this, &Resolver::task_done));
 }
@@ -137,24 +130,24 @@ void Resolver::task_done()
                if(task->addr)
                        signal_address_resolved.emit(task->tag, *task->addr);
                else if(task->error)
+               {
+                       if(signal_resolve_failed.empty())
+                       {
+                               RefPtr<runtime_error> err = task->error;
+                               task->error = nullptr;
+                               thread.pop_complete_task();
+                               throw *err;
+                       }
                        signal_resolve_failed.emit(task->tag, *task->error);
+               }
                thread.pop_complete_task();
        }
 }
 
 
-Resolver::Task::Task():
-       tag(0),
-       family(UNSPEC),
-       addr(0),
-       error(0)
-{ }
-
-
 Resolver::WorkerThread::WorkerThread():
        Thread("Resolver"),
-       sem(1),
-       done(false)
+       sem(1)
 {
        launch();
 }
@@ -181,7 +174,7 @@ Resolver::Task *Resolver::WorkerThread::get_complete_task()
        if(!queue.empty() && queue.front().is_complete())
                return &queue.front();
        else
-               return 0;
+               return nullptr;
 }
 
 void Resolver::WorkerThread::pop_complete_task()
@@ -204,10 +197,10 @@ void Resolver::WorkerThread::main()
                        sem.wait();
                wait = false;
 
-               Task *task = 0;
+               Task *task = nullptr;
                {
                        MutexLock lock(queue_mutex);
-                       for(list<Task>::iterator i=queue.begin(); (!task && i!=queue.end()); ++i)
+                       for(auto i=queue.begin(); (!task && i!=queue.end()); ++i)
                                if(!i->is_complete())
                                        task = &*i;
                }
@@ -234,16 +227,5 @@ void Resolver::WorkerThread::main()
        }
 }
 
-               /*sockaddr sa;
-               unsigned size = fill_sockaddr(sa);
-               char hst[128];
-               char srv[128];
-               int err = getnameinfo(&sa, size, hst, 128, srv, 128, 0);
-               if(err==0)
-               {
-                       host = hst;
-                       serv = srv;
-               }*/
-
 } // namespace Net
 } // namespace Msp