| Index: ppapi/proxy/interface_proxy.h
|
| ===================================================================
|
| --- ppapi/proxy/interface_proxy.h (revision 0)
|
| +++ ppapi/proxy/interface_proxy.h (revision 0)
|
| @@ -0,0 +1,77 @@
|
| +// Copyright (c) 2010 The Chromium Authors. All rights reserved.
|
| +// Use of this source code is governed by a BSD-style license that can be
|
| +// found in the LICENSE file.
|
| +
|
| +#ifndef PPAPI_PROXY_INTERFACE_PROXY_H_
|
| +#define PPAPI_PROXY_INTERFACE_PROXY_H_
|
| +
|
| +#include "base/basictypes.h"
|
| +#include "ipc/ipc_channel.h"
|
| +#include "ipc/ipc_message.h"
|
| +#include "ppapi/c/pp_completion_callback.h"
|
| +#include "ppapi/c/pp_resource.h"
|
| +#include "ppapi/c/pp_var.h"
|
| +#include "ppapi/proxy/interface_id.h"
|
| +
|
| +namespace pp {
|
| +namespace proxy {
|
| +
|
| +class Dispatcher;
|
| +
|
| +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);
|
| + 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.
|
| + const void* target_interface() const { return target_interface_; }
|
| +
|
| + Dispatcher* dispatcher() { return dispatcher_; }
|
| +
|
| + // 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:
|
| + //virtual void OnMessageReceived(const IPC::Message& msg);
|
| +
|
| + protected:
|
| + uint32 SendCallback(PP_CompletionCallback callback);
|
| + PP_CompletionCallback ReceiveCallback(uint32 serialized_callback);
|
| +
|
| + private:
|
| + Dispatcher* dispatcher_;
|
| + const void* target_interface_;
|
| +};
|
| +
|
| +} // namespace proxy
|
| +} // namespace pp
|
| +
|
| +#endif // PPAPI_PROXY_INTERFACE_PROXY_H_
|
| +
|
|
|
| Property changes on: ppapi/proxy/interface_proxy.h
|
| ___________________________________________________________________
|
| Added: svn:eol-style
|
| + LF
|
|
|
|
|