- add sources.
[platform/framework/web/crosswalk.git] / src / base / posix / global_descriptors.cc
1 // Copyright (c) 2012 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.
4
5 #include "base/posix/global_descriptors.h"
6
7 #include <vector>
8 #include <utility>
9
10 #include "base/logging.h"
11
12 namespace base {
13
14 // static
15 GlobalDescriptors* GlobalDescriptors::GetInstance() {
16   typedef Singleton<base::GlobalDescriptors,
17                     LeakySingletonTraits<base::GlobalDescriptors> >
18       GlobalDescriptorsSingleton;
19   return GlobalDescriptorsSingleton::get();
20 }
21
22 int GlobalDescriptors::Get(Key key) const {
23   const int ret = MaybeGet(key);
24
25   if (ret == -1)
26     DLOG(FATAL) << "Unknown global descriptor: " << key;
27   return ret;
28 }
29
30 int GlobalDescriptors::MaybeGet(Key key) const {
31   for (Mapping::const_iterator
32        i = descriptors_.begin(); i != descriptors_.end(); ++i) {
33     if (i->first == key)
34       return i->second;
35   }
36
37   return -1;
38 }
39
40 void GlobalDescriptors::Set(Key key, int fd) {
41   for (Mapping::iterator
42        i = descriptors_.begin(); i != descriptors_.end(); ++i) {
43     if (i->first == key) {
44       i->second = fd;
45       return;
46     }
47   }
48
49   descriptors_.push_back(std::make_pair(key, fd));
50 }
51
52 void GlobalDescriptors::Reset(const Mapping& mapping) {
53   descriptors_ = mapping;
54 }
55
56 GlobalDescriptors::GlobalDescriptors() {}
57
58 GlobalDescriptors::~GlobalDescriptors() {}
59
60 }  // namespace base