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 12namespace ppapi { 13namespace proxy { 14 15class 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. 45class 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. 54class 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