• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 // Copyright (c) 2012 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_BROKER_DISPATCHER_H_
6 #define PPAPI_PROXY_BROKER_DISPATCHER_H_
7 
8 #include "base/compiler_specific.h"
9 #include "ppapi/c/trusted/ppp_broker.h"
10 #include "ppapi/proxy/proxy_channel.h"
11 
12 namespace ppapi {
13 namespace proxy {
14 
15 class PPAPI_PROXY_EXPORT BrokerDispatcher : public ProxyChannel {
16  public:
17   virtual ~BrokerDispatcher();
18 
19   // You must call this function before anything else. Returns true on success.
20   // The delegate pointer must outlive this class, ownership is not
21   // transferred.
22   virtual bool InitBrokerWithChannel(ProxyChannel::Delegate* delegate,
23                                      base::ProcessId peer_pid,
24                                      const IPC::ChannelHandle& channel_handle,
25                                      bool is_client);
26 
27   // IPC::Listener implementation.
28   virtual bool OnMessageReceived(const IPC::Message& msg) OVERRIDE;
29 
30  protected:
31   // You must call InitBrokerWithChannel after the constructor.
32   explicit BrokerDispatcher(PP_ConnectInstance_Func connect_instance);
33 
34   void OnMsgConnectToPlugin(PP_Instance instance,
35                             IPC::PlatformFileForTransit handle,
36                             int32_t* result);
37 
38   PP_ConnectInstance_Func connect_instance_;
39 
40  private:
41   DISALLOW_COPY_AND_ASSIGN(BrokerDispatcher);
42 };
43 
44 // The dispatcher for the browser side of the broker channel.
45 class PPAPI_PROXY_EXPORT BrokerHostDispatcher : public BrokerDispatcher {
46  public:
47   BrokerHostDispatcher();
48 
49   // IPC::Listener implementation.
50   virtual void OnChannelError() OVERRIDE;
51 };
52 
53 // The dispatcher for the broker side of the broker channel.
54 class PPAPI_PROXY_EXPORT BrokerSideDispatcher : public BrokerDispatcher {
55  public:
56   explicit BrokerSideDispatcher(PP_ConnectInstance_Func connect_instance);
57 
58   // IPC::Listener implementation.
59   virtual void OnChannelError() OVERRIDE;
60 };
61 
62 }  // namespace proxy
63 }  // namespace ppapi
64 
65 #endif  // PPAPI_PROXY_BROKER_DISPATCHER_H_
66