// Copyright 2015 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #ifndef NET_DNS_MOJO_HOST_RESOLVER_IMPL_H_ #define NET_DNS_MOJO_HOST_RESOLVER_IMPL_H_ #include #include "base/macros.h" #include "base/threading/thread_checker.h" #include "net/interfaces/host_resolver_service.mojom.h" namespace net { class HostResolver; // This is the implementation of the HostResolver Mojo interface. // Inbound Mojo requests are sent to the HostResolver passed into the // constructor. When destroyed, any outstanding resolver requests are cancelled. // If a request's HostResolverRequestClient is shut down, the associated // resolver request is cancelled. class MojoHostResolverImpl : public interfaces::HostResolver { public: // |resolver| is expected to outlive |this|. explicit MojoHostResolverImpl(net::HostResolver* resolver); ~MojoHostResolverImpl() override; private: class Job; // Removes |job| from the set of pending jobs, and deletes it. void DeleteJob(Job* job); // Overridden from net::interfaces::HostResolver: void Resolve(interfaces::HostResolverRequestInfoPtr request_info, interfaces::HostResolverRequestClientPtr client) override; // Resolver for resolving incoming requests. Not owned. net::HostResolver* resolver_; // All pending jobs, so they can be cancelled when this service is destroyed. // Owns all jobs. std::set pending_jobs_; base::ThreadChecker thread_checker_; DISALLOW_COPY_AND_ASSIGN(MojoHostResolverImpl); }; } // namespace net #endif // NET_DNS_MOJO_HOST_RESOLVER_IMPL_H_