1 /* 2 * Copyright 2008 The WebRTC Project Authors. All rights reserved. 3 * 4 * Use of this source code is governed by a BSD-style license 5 * that can be found in the LICENSE file in the root of the source 6 * tree. An additional intellectual property rights grant can be found 7 * in the file PATENTS. All contributing project authors may 8 * be found in the AUTHORS file in the root of the source tree. 9 */ 10 11 #ifndef WEBRTC_BASE_NETHELPERS_H_ 12 #define WEBRTC_BASE_NETHELPERS_H_ 13 14 #if defined(WEBRTC_POSIX) 15 #include <netdb.h> 16 #include <stddef.h> 17 #elif WEBRTC_WIN 18 #include <winsock2.h> // NOLINT 19 #endif 20 21 #include <list> 22 23 #include "webrtc/base/asyncresolverinterface.h" 24 #include "webrtc/base/signalthread.h" 25 #include "webrtc/base/sigslot.h" 26 #include "webrtc/base/socketaddress.h" 27 28 namespace rtc { 29 30 class AsyncResolverTest; 31 32 // AsyncResolver will perform async DNS resolution, signaling the result on 33 // the SignalDone from AsyncResolverInterface when the operation completes. 34 class AsyncResolver : public SignalThread, public AsyncResolverInterface { 35 public: 36 AsyncResolver(); 37 ~AsyncResolver() override; 38 39 void Start(const SocketAddress& addr) override; 40 bool GetResolvedAddress(int family, SocketAddress* addr) const override; 41 int GetError() const override; 42 void Destroy(bool wait) override; 43 addresses()44 const std::vector<IPAddress>& addresses() const { return addresses_; } set_error(int error)45 void set_error(int error) { error_ = error; } 46 47 protected: 48 void DoWork() override; 49 void OnWorkDone() override; 50 51 private: 52 SocketAddress addr_; 53 std::vector<IPAddress> addresses_; 54 int error_; 55 }; 56 57 // rtc namespaced wrappers for inet_ntop and inet_pton so we can avoid 58 // the windows-native versions of these. 59 const char* inet_ntop(int af, const void *src, char* dst, socklen_t size); 60 int inet_pton(int af, const char* src, void *dst); 61 62 bool HasIPv6Enabled(); 63 } // namespace rtc 64 65 #endif // WEBRTC_BASE_NETHELPERS_H_ 66