Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1080)

Unified Diff: ppapi/proxy/serialized_structs.h

Issue 11894003: PPAPI/NaCl: Move handle extraction code to ppapi/proxy (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: merge Created 7 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « ppapi/proxy/serialized_handle.cc ('k') | ppapi/proxy/serialized_structs.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: ppapi/proxy/serialized_structs.h
diff --git a/ppapi/proxy/serialized_structs.h b/ppapi/proxy/serialized_structs.h
index 5c5dcabe2a037dc0225f7abac22a6b47b5f590af..dcb99817193ae1d850fdc02747fbbe4ffc3fb856 100644
--- a/ppapi/proxy/serialized_structs.h
+++ b/ppapi/proxy/serialized_structs.h
@@ -11,7 +11,6 @@
#include "base/logging.h"
#include "base/shared_memory.h"
#include "build/build_config.h"
-#include "ipc/ipc_platform_file.h"
#include "ppapi/c/pp_bool.h"
#include "ppapi/c/pp_instance.h"
#include "ppapi/c/pp_point.h"
@@ -87,119 +86,6 @@ struct PPBURLLoader_UpdateProgress_Params {
int64_t total_bytes_to_be_received;
};
-// We put all our handles in a unified structure to make it easy to translate
-// them in NaClIPCAdapter for use in NaCl.
-class PPAPI_PROXY_EXPORT SerializedHandle {
- public:
- enum Type { INVALID, SHARED_MEMORY, SOCKET, CHANNEL_HANDLE, FILE };
- struct Header {
- Header() : type(INVALID), size(0) {}
- Header(Type type_arg, uint32_t size_arg)
- : type(type_arg), size(size_arg) {
- }
- Type type;
- uint32_t size;
- };
-
- SerializedHandle();
- // Create an invalid handle of the given type.
- explicit SerializedHandle(Type type);
-
- // Create a shared memory handle.
- SerializedHandle(const base::SharedMemoryHandle& handle, uint32_t size);
-
- // Create a socket, channel or file handle.
- SerializedHandle(const Type type,
- const IPC::PlatformFileForTransit& descriptor);
-
- Type type() const { return type_; }
- bool is_shmem() const { return type_ == SHARED_MEMORY; }
- bool is_socket() const { return type_ == SOCKET; }
- bool is_channel_handle() const { return type_ == CHANNEL_HANDLE; }
- bool is_file() const { return type_ == FILE; }
- const base::SharedMemoryHandle& shmem() const {
- DCHECK(is_shmem());
- return shm_handle_;
- }
- uint32_t size() const {
- DCHECK(is_shmem());
- return size_;
- }
- const IPC::PlatformFileForTransit& descriptor() const {
- DCHECK(is_socket() || is_channel_handle() || is_file());
- return descriptor_;
- }
- void set_shmem(const base::SharedMemoryHandle& handle, uint32_t size) {
- type_ = SHARED_MEMORY;
- shm_handle_ = handle;
- size_ = size;
-
- descriptor_ = IPC::InvalidPlatformFileForTransit();
- }
- void set_socket(const IPC::PlatformFileForTransit& socket) {
- type_ = SOCKET;
- descriptor_ = socket;
-
- shm_handle_ = base::SharedMemory::NULLHandle();
- size_ = 0;
- }
- void set_channel_handle(const IPC::PlatformFileForTransit& descriptor) {
- type_ = CHANNEL_HANDLE;
-
- descriptor_ = descriptor;
- shm_handle_ = base::SharedMemory::NULLHandle();
- size_ = 0;
- }
- void set_file_handle(const IPC::PlatformFileForTransit& descriptor) {
- type_ = FILE;
-
- descriptor_ = descriptor;
- shm_handle_ = base::SharedMemory::NULLHandle();
- size_ = 0;
- }
- void set_null_shmem() {
- set_shmem(base::SharedMemory::NULLHandle(), 0);
- }
- void set_null_socket() {
- set_socket(IPC::InvalidPlatformFileForTransit());
- }
- void set_null_channel_handle() {
- set_channel_handle(IPC::InvalidPlatformFileForTransit());
- }
- void set_null_file_handle() {
- set_file_handle(IPC::InvalidPlatformFileForTransit());
- }
- bool IsHandleValid() const;
-
- Header header() const {
- return Header(type_, size_);
- }
-
- // Closes the handle and sets it to invalid.
- void Close();
-
- // Write/Read a Header, which contains all the data except the handle. This
- // allows us to write the handle in a platform-specific way, as is necessary
- // in NaClIPCAdapter to share handles with NaCl from Windows.
- static bool WriteHeader(const Header& hdr, Pickle* pickle);
- static bool ReadHeader(PickleIterator* iter, Header* hdr);
-
- private:
- // The kind of handle we're holding.
- Type type_;
-
- // We hold more members than we really need; we can't easily use a union,
- // because we hold non-POD types. But these types are pretty light-weight. If
- // we add more complex things later, we should come up with a more memory-
- // efficient strategy.
- // These are valid if type == SHARED_MEMORY.
- base::SharedMemoryHandle shm_handle_;
- uint32_t size_;
-
- // This is valid if type == SOCKET || type == CHANNEL_HANDLE.
- IPC::PlatformFileForTransit descriptor_;
-};
-
struct PPPDecryptor_Buffer {
ppapi::HostResource resource;
uint32_t size;
« no previous file with comments | « ppapi/proxy/serialized_handle.cc ('k') | ppapi/proxy/serialized_structs.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698