1// Copyright (c) 2011 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.
4
5#ifndef PPAPI_PROXY_PPB_BROKER_PROXY_H_
6#define PPAPI_PROXY_PPB_BROKER_PROXY_H_
7
8#include "base/sync_socket.h"
9#include "ipc/ipc_platform_file.h"
10#include "ppapi/c/pp_instance.h"
11#include "ppapi/proxy/interface_proxy.h"
12#include "ppapi/proxy/proxy_completion_callback_factory.h"
13#include "ppapi/utility/completion_callback_factory.h"
14
15namespace ppapi {
16
17class HostResource;
18
19namespace proxy {
20
21class PPB_Broker_Proxy : public InterfaceProxy {
22 public:
23  explicit PPB_Broker_Proxy(Dispatcher* dispatcher);
24  virtual ~PPB_Broker_Proxy();
25
26  static PP_Resource CreateProxyResource(PP_Instance instance);
27
28  // InterfaceProxy implementation.
29  virtual bool OnMessageReceived(const IPC::Message& msg);
30
31  static const ApiID kApiID = API_ID_PPB_BROKER;
32
33 private:
34  // Message handlers.
35  void OnMsgCreate(PP_Instance instance, ppapi::HostResource* result_resource);
36  void OnMsgConnect(const ppapi::HostResource& broker);
37  void OnMsgConnectComplete(const ppapi::HostResource& broker,
38                            IPC::PlatformFileForTransit foreign_socket_handle,
39                            int32_t result);
40
41  void ConnectCompleteInHost(int32_t result,
42                             const ppapi::HostResource& host_resource);
43
44  ProxyCompletionCallbackFactory<PPB_Broker_Proxy> callback_factory_;
45};
46
47}  // namespace proxy
48}  // namespace ppapi
49
50#endif  // PPAPI_PROXY_PPB_BROKER_PROXY_H_
51