1 // Copyright (c) 2009 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
5 #include "base/global_descriptors_posix.h"
10 #include "base/logging.h"
15 GlobalDescriptors
* GlobalDescriptors::GetInstance() {
16 typedef Singleton
<base::GlobalDescriptors
,
17 LeakySingletonTraits
<base::GlobalDescriptors
> >
18 GlobalDescriptorsSingleton
;
19 return GlobalDescriptorsSingleton::get();
22 int GlobalDescriptors::Get(Key key
) const {
23 const int ret
= MaybeGet(key
);
26 LOG(FATAL
) << "Unknown global descriptor: " << key
;
30 int GlobalDescriptors::MaybeGet(Key key
) const {
31 for (Mapping::const_iterator
32 i
= descriptors_
.begin(); i
!= descriptors_
.end(); ++i
) {
37 // In order to make unittests pass, we define a default mapping from keys to
38 // descriptors by adding a fixed offset:
39 return kBaseDescriptor
+ key
;
42 void GlobalDescriptors::Set(Key key
, int fd
) {
43 for (Mapping::iterator
44 i
= descriptors_
.begin(); i
!= descriptors_
.end(); ++i
) {
45 if (i
->first
== key
) {
51 descriptors_
.push_back(std::make_pair(key
, fd
));
54 void GlobalDescriptors::Reset(const Mapping
& mapping
) {
55 descriptors_
= mapping
;
58 GlobalDescriptors::GlobalDescriptors() {}
60 GlobalDescriptors::~GlobalDescriptors() {}