Home | History | Annotate | Download | only in proxy
      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