| 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
|
|
|