1 /* 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 11 #ifndef WEBRTC_BASE_ASYNCRESOLVERINTERFACE_H_ 12 #define WEBRTC_BASE_ASYNCRESOLVERINTERFACE_H_ 13 14 #include "webrtc/base/sigslot.h" 15 #include "webrtc/base/socketaddress.h" 16 17 namespace rtc { 18 19 // This interface defines the methods to resolve the address asynchronously. 20 class 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. address()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 46 47 #endif 48