• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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 
dispatcher()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