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