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

Unified Diff: base/global_descriptors_posix.h

Issue 11293210: Move global_descriptors to base/posix. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 8 years, 1 month 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 | « base/base.gypi ('k') | base/global_descriptors_posix.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: base/global_descriptors_posix.h
diff --git a/base/global_descriptors_posix.h b/base/global_descriptors_posix.h
deleted file mode 100644
index 47399238530aff010812a661c738f36c0d7d8337..0000000000000000000000000000000000000000
--- a/base/global_descriptors_posix.h
+++ /dev/null
@@ -1,70 +0,0 @@
-// Copyright (c) 2012 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 BASE_GLOBAL_DESCRIPTORS_POSIX_H_
-#define BASE_GLOBAL_DESCRIPTORS_POSIX_H_
-
-#include "build/build_config.h"
-
-#include <vector>
-#include <utility>
-
-#include <stdint.h>
-
-#include "base/memory/singleton.h"
-
-namespace base {
-
-// It's common practice to install file descriptors into well known slot
-// numbers before execing a child; stdin, stdout and stderr are ubiqutous
-// examples.
-//
-// However, when using a zygote model, this becomes troublesome. Since the
-// descriptors which need to be in these slots generally aren't known, any code
-// could open a resource and take one of the reserved descriptors. Simply
-// overwriting the slot isn't a viable solution.
-//
-// We could try to fill the reserved slots as soon as possible, but this is a
-// fragile solution since global constructors etc are able to open files.
-//
-// Instead, we retreat from the idea of installing descriptors in specific
-// slots and add a layer of indirection in the form of this singleton object.
-// It maps from an abstract key to a descriptor. If independent modules each
-// need to define keys, then values should be chosen randomly so as not to
-// collide.
-class BASE_EXPORT GlobalDescriptors {
- public:
- typedef uint32_t Key;
- typedef std::pair<Key, int> KeyFDPair;
- typedef std::vector<KeyFDPair> Mapping;
-
- // Often we want a canonical descriptor for a given Key. In this case, we add
- // the following constant to the key value:
- static const int kBaseDescriptor = 3; // 0, 1, 2 are already taken.
-
- // Return the singleton instance of GlobalDescriptors.
- static GlobalDescriptors* GetInstance();
-
- // Get a descriptor given a key. It is a fatal error if the key is not known.
- int Get(Key key) const;
-
- // Get a descriptor give a key. Returns -1 on error.
- int MaybeGet(Key key) const;
-
- // Set the descriptor for the given key.
- void Set(Key key, int fd);
-
- void Reset(const Mapping& mapping);
-
- private:
- friend struct DefaultSingletonTraits<GlobalDescriptors>;
- GlobalDescriptors();
- ~GlobalDescriptors();
-
- Mapping descriptors_;
-};
-
-} // namespace base
-
-#endif // BASE_GLOBAL_DESCRIPTORS_POSIX_H_
« no previous file with comments | « base/base.gypi ('k') | base/global_descriptors_posix.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698