Index: webrtc/rtc_base/nethelpers.h |
diff --git a/webrtc/rtc_base/nethelpers.h b/webrtc/rtc_base/nethelpers.h |
index b5f0c01a5cc46fd2766e279c3f5ff6ea9c8c2489..d25879e78599820840063e1df77205717b03d253 100644 |
--- a/webrtc/rtc_base/nethelpers.h |
+++ b/webrtc/rtc_base/nethelpers.h |
@@ -19,25 +19,19 @@ |
#endif |
#include <list> |
-#include <memory> |
#include "webrtc/rtc_base/asyncresolverinterface.h" |
-#include "webrtc/rtc_base/refcount.h" |
-#include "webrtc/rtc_base/scoped_ref_ptr.h" |
+#include "webrtc/rtc_base/signalthread.h" |
#include "webrtc/rtc_base/sigslot.h" |
#include "webrtc/rtc_base/socketaddress.h" |
-#include "webrtc/rtc_base/thread_checker.h" |
namespace rtc { |
-class Thread; |
-class TaskQueue; |
+class AsyncResolverTest; |
-// AsyncResolver will perform async DNS resolution, signaling the result on the |
-// SignalDone from AsyncResolverInterface when the operation completes. |
-// SignalDone is fired on the same thread on which the AsyncResolver was |
-// constructed. |
-class AsyncResolver : public AsyncResolverInterface { |
+// AsyncResolver will perform async DNS resolution, signaling the result on |
+// the SignalDone from AsyncResolverInterface when the operation completes. |
+class AsyncResolver : public SignalThread, public AsyncResolverInterface { |
public: |
AsyncResolver(); |
~AsyncResolver() override; |
@@ -48,34 +42,16 @@ class AsyncResolver : public AsyncResolverInterface { |
void Destroy(bool wait) override; |
const std::vector<IPAddress>& addresses() const { return addresses_; } |
+ void set_error(int error) { error_ = error; } |
- private: |
- void ResolveDone(int error, std::vector<IPAddress> addresses); |
- |
- class Trampoline : public RefCountInterface { |
- public: |
- Trampoline(AsyncResolver* resolver) : resolver(resolver) {} |
- // Points back to the resolver, as long as it is alive. Cleared |
- // by the AsyncResolver destructor. |
- AsyncResolver* resolver; |
- }; |
+ protected: |
+ void DoWork() override; |
+ void OnWorkDone() override; |
- // |state_| is non-null while resolution is pending, i.e., set |
- // non-null by Start() and cleared by ResolveDone(). The destructor |
- // clears state_->resolver (assuming |state_| is non-null), to |
- // indicate that the resolver can no longer be accessed. |
- scoped_refptr<Trampoline> state_ ACCESS_ON(construction_thread_); |
- |
- Thread* const construction_thread_; |
- // Set to true when Destroy() can't delete the object immediately. |
- // Indicate that the ResolveDone method is now responsible for |
- // deletion. method should delete the object. |
- bool destroyed_ = false; |
- // Queue used only for a single task. |
- std::unique_ptr<TaskQueue> resolver_queue_; |
+ private: |
SocketAddress addr_; |
std::vector<IPAddress> addresses_; |
- int error_ = -1; |
+ int error_; |
}; |
// rtc namespaced wrappers for inet_ntop and inet_pton so we can avoid |