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

Side by Side Diff: base/file_descriptor_store.cc

Issue 2684433003: Files required by a service now listed in manifest. (Closed)
Patch Set: Removed unused method in apk_assets Created 3 years, 10 months 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 unified diff | Download patch
OLDNEW
(Empty)
1 // Copyright 2017 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/file_descriptor_store.h"
6
7 #include <utility>
8
9 #include "base/logging.h"
10
11 namespace base {
12
13 FileDescriptorStore::Descriptor::Descriptor(const std::string& key,
14 base::ScopedFD fd)
15 : key(key),
16 fd(std::move(fd)),
17 region(base::MemoryMappedFile::Region::kWholeFile) {}
18
19 FileDescriptorStore::Descriptor::Descriptor(
20 const std::string& key,
21 base::ScopedFD fd,
22 base::MemoryMappedFile::Region region)
23 : key(key), fd(std::move(fd)), region(region) {}
24
25 FileDescriptorStore::Descriptor::Descriptor(
26 FileDescriptorStore::Descriptor&& other)
27 : key(other.key), fd(std::move(other.fd)), region(other.region) {}
28
29 FileDescriptorStore::Descriptor::~Descriptor() {}
30
31 // static
32 FileDescriptorStore& FileDescriptorStore::GetInstance() {
33 static FileDescriptorStore* store = new FileDescriptorStore;
34 return *store;
35 }
36
37 base::ScopedFD FileDescriptorStore::TakeFD(
38 const std::string& key,
39 base::MemoryMappedFile::Region* region) {
40 base::ScopedFD fd = MaybeTakeFD(key, region);
41 if (!fd.is_valid())
42 DLOG(FATAL) << "Unknown global descriptor: " << key;
43 return fd;
44 }
45
46 base::ScopedFD FileDescriptorStore::MaybeTakeFD(
47 const std::string& key,
48 base::MemoryMappedFile::Region* region) {
49 auto iter = descriptors_.find(key);
50 if (iter == descriptors_.end())
51 return base::ScopedFD();
52 if (region)
53 *region = iter->second.region;
54 base::ScopedFD result = std::move(iter->second.fd);
55 descriptors_.erase(iter);
56 return result;
57 }
58
59 void FileDescriptorStore::Set(const std::string& key, base::ScopedFD fd) {
60 Set(key, std::move(fd), base::MemoryMappedFile::Region::kWholeFile);
61 }
62
63 void FileDescriptorStore::Set(const std::string& key,
64 base::ScopedFD fd,
65 base::MemoryMappedFile::Region region) {
66 Descriptor descriptor(key, std::move(fd), region);
67 descriptors_.insert(std::make_pair(key, std::move(descriptor)));
68 }
69
70 FileDescriptorStore::FileDescriptorStore() {}
71
72 FileDescriptorStore::~FileDescriptorStore() {}
73
74 } // namespace base
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698