| Index: sandbox/src/shared_handles.h
|
| diff --git a/sandbox/src/shared_handles.h b/sandbox/src/shared_handles.h
|
| deleted file mode 100644
|
| index 2c76bfb2802514c408184627b93fd422e0a0d015..0000000000000000000000000000000000000000
|
| --- a/sandbox/src/shared_handles.h
|
| +++ /dev/null
|
| @@ -1,108 +0,0 @@
|
| -// 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 SANDBOX_SRC_SHARED_HANDLES_H__
|
| -#define SANDBOX_SRC_SHARED_HANDLES_H__
|
| -
|
| -#include "base/basictypes.h"
|
| -
|
| -#ifndef HANDLE
|
| -// We can provide our own windows compatilble handle definition, but
|
| -// in general we want to rely on the client of this api to include
|
| -// the proper windows headers. Note that we don't want to bring the
|
| -// whole <windows.h> into scope if we don't have to.
|
| -typedef void* HANDLE;
|
| -#endif
|
| -
|
| -namespace sandbox {
|
| -
|
| -// SharedHandles is a simple class to stash and find windows object handles
|
| -// given a raw block of memory which is shared between two processes.
|
| -// It addresses the need to communicate a handle value between two windows
|
| -// processes given that they are already sharing some memory.
|
| -//
|
| -// This class is not exposed directly to users of the sanbox API, instead
|
| -// we expose the wrapper methods TargetProcess::TransferHandle( ) and
|
| -// TargetServices::GetTransferHandle()
|
| -//
|
| -// Use it for a small number of items, since internaly uses linear seach
|
| -//
|
| -// The use is very simple. Given a shared memory between proces A and B:
|
| -// process A:
|
| -// HANDLE handle = SomeFunction(..);
|
| -// SharedHandles shared_handes;
|
| -// shared_handles.Init(memory)
|
| -// shared_handles.SetHandle(3, handle);
|
| -//
|
| -// process B:
|
| -// SharedHandles shared_handes;
|
| -// shared_handles.Init(memory)
|
| -// HANDLE handle = shared_handles.GetHandle(3);
|
| -//
|
| -// Note that '3' in this example is a unique id, that must be agreed before
|
| -// transfer
|
| -//
|
| -// Note2: While this class can be used in a single process, there are
|
| -// better alternatives such as STL
|
| -//
|
| -// Note3: Under windows a kernel object handle in one process does not
|
| -// make sense for another process unless there is a DuplicateHandle( )
|
| -// call involved which this class DOES NOT do that for you.
|
| -//
|
| -// Note4: Under windows, shared memory when created is initialized to
|
| -// zeros always. If you are not using shared memory it is your responsability
|
| -// to zero it for the setter process and to copy it to the getter process.
|
| -class SharedHandles {
|
| - public:
|
| - SharedHandles();
|
| -
|
| - // Initializes the shared memory for use.
|
| - // Pass the shared memory base and size. It will internally compute
|
| - // how many handles can it store. If initialization fails the return value
|
| - // is false.
|
| - bool Init(void* raw_mem, size_t size_bytes);
|
| -
|
| - // Sets a handle in the shared memory for transfer.
|
| - // Parameters:
|
| - // tag : an integer, different from zero that uniquely identfies the
|
| - // handle to transfer.
|
| - // handle: the handle value associated with 'tag' to tranfer
|
| - // Returns false if there is not enough space in the shared memory for
|
| - // this handle.
|
| - bool SetHandle(uint32 tag, HANDLE handle);
|
| -
|
| - // Gets a handle previously stored by SetHandle.
|
| - // Parameters:
|
| - // tag: an integer different from zero that uniquely identfies the handle
|
| - // to retrieve.
|
| - // *handle: output handle value if the call was succesful.
|
| - // If a handle with the provided tag is not found the return value is false.
|
| - // If the tag is found the return value is true.
|
| - bool GetHandle(uint32 tag, HANDLE* handle);
|
| -
|
| - private:
|
| - // A single item is the tuple handle/tag
|
| - struct SharedItem {
|
| - uint32 tag;
|
| - void* item;
|
| - };
|
| -
|
| - // SharedMem is used to layout the memory as an array of SharedItems
|
| - struct SharedMem {
|
| - size_t max_items;
|
| - SharedItem* items;
|
| - };
|
| -
|
| - // Finds an Item tuple provided the handle tag.
|
| - // Uses linear search because we expect the number of handles to be
|
| - // small (say less than ~100).
|
| - SharedItem* FindByTag(uint32 tag);
|
| -
|
| - SharedMem shared_;
|
| - DISALLOW_COPY_AND_ASSIGN(SharedHandles);
|
| -};
|
| -
|
| -} // namespace sandbox
|
| -
|
| -#endif // SANDBOX_SRC_SHARED_HANDLES_H__
|
|
|