1 // Copyright 2013 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
5 #ifndef PPAPI_PROXY_HOST_RESOLVER_RESOURCE_BASE_H_
6 #define PPAPI_PROXY_HOST_RESOLVER_RESOURCE_BASE_H_
11 #include "base/basictypes.h"
12 #include "base/compiler_specific.h"
13 #include "base/memory/ref_counted.h"
14 #include "ppapi/c/private/ppb_host_resolver_private.h"
15 #include "ppapi/proxy/plugin_resource.h"
16 #include "ppapi/proxy/ppapi_proxy_export.h"
20 class TrackedCallback
;
29 class NetAddressResource
;
31 class PPAPI_PROXY_EXPORT HostResolverResourceBase
: public PluginResource
{
33 HostResolverResourceBase(Connection connection
,
36 virtual ~HostResolverResourceBase();
38 int32_t ResolveImpl(const char* host
,
40 const PP_HostResolver_Private_Hint
* hint
,
41 scoped_refptr
<TrackedCallback
> callback
);
42 PP_Var
GetCanonicalNameImpl();
43 uint32_t GetSizeImpl();
44 scoped_refptr
<NetAddressResource
> GetNetAddressImpl(uint32_t index
);
47 // IPC message handlers.
48 void OnPluginMsgResolveReply(
49 const ResourceMessageReplyParams
& params
,
50 const std::string
& canonical_name
,
51 const std::vector
<PP_NetAddress_Private
>& net_address_list
);
53 void SendResolve(const HostPortPair
& host_port
,
54 const PP_HostResolver_Private_Hint
* hint
);
56 bool ResolveInProgress() const;
60 scoped_refptr
<TrackedCallback
> resolve_callback_
;
62 // Set to false if there is a pending resolve request or the previous request
64 bool allow_get_results_
;
65 std::string canonical_name_
;
66 std::vector
<scoped_refptr
<NetAddressResource
> > net_address_list_
;
68 DISALLOW_COPY_AND_ASSIGN(HostResolverResourceBase
);
74 #endif // PPAPI_PROXY_HOST_RESOLVER_RESOURCE_BASE_H_