summaryrefslogtreecommitdiffstats
path: root/sandbox/win/src/shared_handles.h
diff options
context:
space:
mode:
authorerg@google.com <erg@google.com@0039d316-1c4b-4281-b951-d872f2087c98>2012-07-13 20:49:23 +0000
committererg@google.com <erg@google.com@0039d316-1c4b-4281-b951-d872f2087c98>2012-07-13 20:49:23 +0000
commite628fde3462899ba06af2fbc5285563c456ed5c4 (patch)
treee3ed3eb98c0044b055606bdf8628191b9b99c17c /sandbox/win/src/shared_handles.h
parent23d6315575647756c4be985b895ec2c447e2f088 (diff)
downloadchromium_src-e628fde3462899ba06af2fbc5285563c456ed5c4.zip
chromium_src-e628fde3462899ba06af2fbc5285563c456ed5c4.tar.gz
chromium_src-e628fde3462899ba06af2fbc5285563c456ed5c4.tar.bz2
Emergency revert; rietveld broke; tree broke
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@146646 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'sandbox/win/src/shared_handles.h')
-rw-r--r--sandbox/win/src/shared_handles.h108
1 files changed, 0 insertions, 108 deletions
diff --git a/sandbox/win/src/shared_handles.h b/sandbox/win/src/shared_handles.h
deleted file mode 100644
index 2c76bfb..0000000
--- a/sandbox/win/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__