• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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