Index: ppapi/proxy/interface_proxy.h |
=================================================================== |
--- ppapi/proxy/interface_proxy.h (revision 74021) |
+++ ppapi/proxy/interface_proxy.h (working copy) |
@@ -21,28 +21,29 @@ |
class InterfaceProxy : public IPC::Channel::Listener, |
public IPC::Message::Sender { |
public: |
- // Creates the given interface associated with the given dispatcher. The |
- // dispatcher manages our lifetime. |
- // |
- // The target interface pointer, when non-NULL, indicates that this is a |
- // target proxy (see dispatcher.h for a definition). In this case, the proxy |
- // will interpret this pointer to the actual implementation of the interface |
- // in the local process. |
- // |
- // If the target interface is NULL, this proxy will be a "source" interface. |
- InterfaceProxy(Dispatcher* dispatcher, const void* target_interface); |
+ // Factory function type for interfaces. Ownership of the returned pointer |
+ // is transferred to the caller. |
+ typedef InterfaceProxy* (*Factory)(Dispatcher* dispatcher, |
+ const void* target_interface); |
+ |
+ // Information about the interface. Each interface has a static function to |
+ // return its info, which allows either construction on the target side, and |
+ // getting the proxied interface on the source side (see dispatcher.h for |
+ // terminology). |
+ struct Info { |
+ const void* interface; |
+ |
+ const char* name; |
+ InterfaceID id; |
+ |
+ bool is_trusted; |
+ |
+ InterfaceProxy::Factory create_proxy; |
+ }; |
+ |
virtual ~InterfaceProxy(); |
- // See dispatcher.h for definitions of source and target. |
- bool is_source_proxy() const { return !target_interface_; } |
- bool is_target_proxy() const { return !!target_interface_; } |
- |
- // When this proxy is the "target" of the IPC communication (see |
- // dispatcher.h), this target_interface pointer will indicate the local |
- // side's interface pointer. This contains the functions that actually |
- // implement the proxied interface. |
- // |
- // This will be NULL when this proxy is a source proxy. |
+ // The actual implementation of the given interface in the current process. |
const void* target_interface() const { return target_interface_; } |
Dispatcher* dispatcher() const { return dispatcher_; } |
@@ -50,18 +51,19 @@ |
// IPC::Message::Sender implementation. |
virtual bool Send(IPC::Message* msg); |
- // Returns the local implementation of the interface that will proxy it to |
- // the remote side. This is used on the source side only (see dispatcher.h). |
- virtual const void* GetSourceInterface() const = 0; |
- |
- // Returns the interface ID associated with this proxy. Implemented by each |
- // derived class to identify itself. |
- virtual InterfaceID GetInterfaceId() const = 0; |
- |
// Sub-classes must implement IPC::Channel::Listener which contains this: |
//virtual bool OnMessageReceived(const IPC::Message& msg); |
protected: |
+ // Creates the given interface associated with the given dispatcher. The |
+ // dispatcher manages our lifetime. |
+ // |
+ // The target interface pointer, when non-NULL, indicates that this is a |
+ // target proxy (see dispatcher.h for a definition). In this case, the proxy |
+ // will interpret this pointer to the actual implementation of the interface |
+ // in the local process. |
+ InterfaceProxy(Dispatcher* dispatcher, const void* target_interface); |
+ |
uint32 SendCallback(PP_CompletionCallback callback); |
PP_CompletionCallback ReceiveCallback(uint32 serialized_callback); |