blob: 5b2303f4d80286081b79a9b129f8d7f205e0051e [file] [log] [blame]
henrike@webrtc.orgf0488722014-05-13 18:00:261/*
2 * Copyright 2013 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
Mirko Bonadei92ea95e2017-09-15 04:47:3111#ifndef RTC_BASE_ASYNCRESOLVERINTERFACE_H_
12#define RTC_BASE_ASYNCRESOLVERINTERFACE_H_
henrike@webrtc.orgf0488722014-05-13 18:00:2613
Mirko Bonadei92ea95e2017-09-15 04:47:3114#include "rtc_base/socketaddress.h"
Artem Titove41c4332018-07-25 13:04:2815#include "rtc_base/third_party/sigslot/sigslot.h"
henrike@webrtc.orgf0488722014-05-13 18:00:2616
Henrik Kjellanderec78f1c2017-06-29 05:52:5017namespace rtc {
18
19// This interface defines the methods to resolve the address asynchronously.
20class AsyncResolverInterface {
21 public:
22 AsyncResolverInterface();
23 virtual ~AsyncResolverInterface();
24
25 // Start address resolve process.
26 virtual void Start(const SocketAddress& addr) = 0;
27 // Returns top most resolved address of |family|
28 virtual bool GetResolvedAddress(int family, SocketAddress* addr) const = 0;
29 // Returns error from resolver.
30 virtual int GetError() const = 0;
31 // Delete the resolver.
32 virtual void Destroy(bool wait) = 0;
33 // Returns top most resolved IPv4 address if address is resolved successfully.
34 // Otherwise returns address set in SetAddress.
35 SocketAddress address() const {
36 SocketAddress addr;
37 GetResolvedAddress(AF_INET, &addr);
38 return addr;
39 }
40
41 // This signal is fired when address resolve process is completed.
42 sigslot::signal1<AsyncResolverInterface*> SignalDone;
43};
44
45} // namespace rtc
henrike@webrtc.orgf0488722014-05-13 18:00:2646
47#endif