Home | History | Annotate | Download | only in proxy
      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_INTERFACE_PROXY_H_
      6 #define PPAPI_PROXY_INTERFACE_PROXY_H_
      7 
      8 #include "base/basictypes.h"
      9 #include "ipc/ipc_listener.h"
     10 #include "ipc/ipc_sender.h"
     11 #include "ppapi/c/pp_completion_callback.h"
     12 #include "ppapi/c/pp_resource.h"
     13 #include "ppapi/c/pp_var.h"
     14 #include "ppapi/shared_impl/api_id.h"
     15 
     16 namespace ppapi {
     17 namespace proxy {
     18 
     19 class Dispatcher;
     20 
     21 class InterfaceProxy : public IPC::Listener, public IPC::Sender {
     22  public:
     23   // Factory function type for interfaces. Ownership of the returned pointer
     24   // is transferred to the caller.
     25   typedef InterfaceProxy* (*Factory)(Dispatcher* dispatcher);
     26 
     27   virtual ~InterfaceProxy();
     28 
     29   Dispatcher* dispatcher() const { return dispatcher_; }
     30 
     31   // IPC::Sender implementation.
     32   virtual bool Send(IPC::Message* msg);
     33 
     34   // Sub-classes must implement IPC::Listener which contains this:
     35   //virtual bool OnMessageReceived(const IPC::Message& msg);
     36 
     37  protected:
     38   // Creates the given interface associated with the given dispatcher. The
     39   // dispatcher manages our lifetime.
     40   InterfaceProxy(Dispatcher* dispatcher);
     41 
     42  private:
     43   Dispatcher* dispatcher_;
     44 };
     45 
     46 }  // namespace proxy
     47 }  // namespace ppapi
     48 
     49 #endif  // PPAPI_PROXY_INTERFACE_PROXY_H_
     50 
     51