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.
5 #ifndef PPAPI_PROXY_BROKER_DISPATCHER_H_
6 #define PPAPI_PROXY_BROKER_DISPATCHER_H_
8 #include "base/compiler_specific.h"
9 #include "ppapi/c/trusted/ppp_broker.h"
10 #include "ppapi/proxy/proxy_channel.h"
15 class PPAPI_PROXY_EXPORT BrokerDispatcher
: public ProxyChannel
{
17 ~BrokerDispatcher() override
;
19 // You must call this function before anything else. Returns true on success.
20 // The delegate pointer must outlive this class, ownership is not
22 virtual bool InitBrokerWithChannel(ProxyChannel::Delegate
* delegate
,
23 base::ProcessId peer_pid
,
24 const IPC::ChannelHandle
& channel_handle
,
27 // IPC::Listener implementation.
28 bool OnMessageReceived(const IPC::Message
& msg
) override
;
31 // You must call InitBrokerWithChannel after the constructor.
32 explicit BrokerDispatcher(PP_ConnectInstance_Func connect_instance
);
34 void OnMsgConnectToPlugin(PP_Instance instance
,
35 IPC::PlatformFileForTransit handle
,
38 PP_ConnectInstance_Func connect_instance_
;
41 DISALLOW_COPY_AND_ASSIGN(BrokerDispatcher
);
44 // The dispatcher for the browser side of the broker channel.
45 class PPAPI_PROXY_EXPORT BrokerHostDispatcher
: public BrokerDispatcher
{
47 BrokerHostDispatcher();
49 // IPC::Listener implementation.
50 void OnChannelError() override
;
53 // The dispatcher for the broker side of the broker channel.
54 class PPAPI_PROXY_EXPORT BrokerSideDispatcher
: public BrokerDispatcher
{
56 explicit BrokerSideDispatcher(PP_ConnectInstance_Func connect_instance
);
58 // IPC::Listener implementation.
59 void OnChannelError() override
;
65 #endif // PPAPI_PROXY_BROKER_DISPATCHER_H_