• 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();
~AsyncResolver()37   virtual ~AsyncResolver() {}
38 
39   virtual void Start(const SocketAddress& addr);
40   virtual bool GetResolvedAddress(int family, SocketAddress* addr) const;
GetError()41   virtual int GetError() const { return error_; }
Destroy(bool wait)42   virtual void Destroy(bool wait) { SignalThread::Destroy(wait); }
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   virtual void DoWork();
49   virtual void OnWorkDone();
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