Index: src/trusted/plugin/srpc/portable_handle.h |
=================================================================== |
--- src/trusted/plugin/srpc/portable_handle.h (revision 2716) |
+++ src/trusted/plugin/srpc/portable_handle.h (working copy) |
@@ -1,126 +0,0 @@ |
-/* |
- * Copyright 2008 The Native Client Authors. All rights reserved. |
- * Use of this source code is governed by a BSD-style license that can |
- * be found in the LICENSE file. |
- */ |
- |
- |
-// The abstract portable scriptable object base class. |
- |
-#ifndef NATIVE_CLIENT_SRC_TRUSTED_PLUGIN_SRPC_PORTABLE_HANDLE_H_ |
-#define NATIVE_CLIENT_SRC_TRUSTED_PLUGIN_SRPC_PORTABLE_HANDLE_H_ |
- |
-#include <stdio.h> |
-#include <map> |
- |
-#include "native_client/src/include/nacl_macros.h" |
-#include "native_client/src/trusted/plugin/srpc/method_map.h" |
-#include "native_client/src/trusted/plugin/srpc/utility.h" |
- |
- |
-struct NaClDesc; |
- |
-namespace nacl { |
-class DescWrapper; |
-} // namespace |
- |
-namespace plugin { |
- |
-// Forward declarations for externals. |
-class BrowserInterface; |
-class Plugin; |
-class ScriptableHandle; |
-class ServiceRuntime; |
- |
-typedef enum { |
- METHOD_CALL = 0, |
- PROPERTY_GET, |
- PROPERTY_SET |
-} CallType; |
- |
- |
-// PortableHandle represents scriptable objects used by the browser plugin. |
-// The classes in this hierarchy are independent of the browser plugin API |
-// used to implement them. PortableHandle is an abstract base class. |
-class PortableHandle { |
- public: |
- // Delete this object. |
- void Delete() { delete this; } |
- |
- // A call to Invalidate() means the object should discard any |
- // refcounted objects it holds, without using Unref(), e.g. by |
- // setting the pointers to NULL. These objects have either already |
- // been deallocated or will be deallocated shortly. |
- virtual void Invalidate() = 0; |
- |
- // Generic NPAPI/IDispatch interface |
- bool Invoke(uintptr_t method_id, CallType call_type, SrpcParams* params); |
- bool HasMethod(uintptr_t method_id, CallType call_type); |
- |
- // Get the method signature so ScriptableHandle can marshal the inputs |
- bool InitParams(uintptr_t method_id, CallType call_type, SrpcParams* params); |
- |
- // The interface to the browser. |
- virtual BrowserInterface* browser_interface() const = 0; |
- |
- // Every portable object has a pointer to the root plugin object. |
- virtual Plugin* plugin() const = 0; |
- |
- // DescBasedHandle objects encapsulate a descriptor. |
- virtual nacl::DescWrapper* wrapper() const { return NULL; } |
- virtual NaClDesc* desc() const { return NULL; } |
- |
- // SharedMemory objects are mapped in at a non-NULL address and have a |
- // non-zero size. |
- virtual void* shm_addr() const { return NULL; } |
- virtual size_t shm_size() const { return 0; } |
- |
- // SocketAddress objects can be connected to, returning a ConnectedSocket. |
- virtual ScriptableHandle* Connect() { |
- return NULL; |
- } |
- // This is only virtual because although Connect() always returns a |
- // ConnectedSocket, it cannot be declared as doing so, because of |
- // the PortableHandle/ScriptableHandle split. |
- virtual void StartJSObjectProxy(Plugin* plugin) { |
- UNREFERENCED_PARAMETER(plugin); |
- } |
- |
- protected: |
- PortableHandle(); |
- virtual ~PortableHandle(); |
- |
- // Derived classes can set the properties and methods they export by |
- // the following three methods. |
- void AddPropertyGet(RpcFunction function_ptr, |
- const char* name, |
- const char* outs); |
- void AddPropertySet(RpcFunction function_ptr, |
- const char* name, |
- const char* ins); |
- void AddMethodCall(RpcFunction function_ptr, |
- const char* name, |
- const char* ins, |
- const char* outs); |
- |
- // Every derived class should provide an implementation for these functions |
- // to allow handling of method calls that cannot be registered at build time. |
- virtual bool InitParamsEx(uintptr_t method_id, |
- CallType call_type, |
- SrpcParams* params); |
- virtual bool InvokeEx(uintptr_t method_id, |
- CallType call_type, |
- SrpcParams* params); |
- virtual bool HasMethodEx(uintptr_t method_id, CallType call_type); |
- |
- private: |
- NACL_DISALLOW_COPY_AND_ASSIGN(PortableHandle); |
- MethodInfo* GetMethodInfo(uintptr_t method_id, CallType call_type); |
- MethodMap methods_; |
- MethodMap property_get_methods_; |
- MethodMap property_set_methods_; |
-}; |
- |
-} // namespace plugin |
- |
-#endif // NATIVE_CLIENT_SRC_TRUSTED_PLUGIN_SRPC_PORTABLE_HANDLE_H_ |