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

Side by Side Diff: mojo/services/files/public/c/lib/singletons.cc

Issue 1388413005: Move //mojo/services/X/public/... to //mojo/services/X/... (part 1). (Closed) Base URL: https://github.com/domokit/mojo.git@master
Patch Set: Created 5 years, 2 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 2015 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 "files/public/c/lib/singletons.h"
6
7 #include <errno.h>
8
9 #include "files/public/c/lib/directory_wrapper.h"
10 #include "files/public/c/lib/fd_table.h"
11 #include "files/public/c/lib/real_errno_impl.h"
12 #include "files/public/c/mojio_config.h"
13 #include "mojo/public/cpp/environment/logging.h"
14
15 namespace mojio {
16 namespace singletons {
17
18 namespace {
19
20 RealErrnoImpl* g_errno_impl = nullptr;
21 FDTable* g_fd_table = nullptr;
22 DirectoryWrapper* g_current_working_directory = nullptr;
23
24 } // namespace
25
26 ErrnoImpl* GetErrnoImpl() {
27 if (!g_errno_impl)
28 g_errno_impl = new RealErrnoImpl(); // Does NOT modify errno.
29 return g_errno_impl;
30 }
31
32 void ResetErrnoImpl() {
33 delete g_errno_impl; // Does NOT modify errno.
34 g_errno_impl = nullptr;
35 }
36
37 FDTable* GetFDTable() {
38 ErrnoImpl::Setter errno_setter(GetErrnoImpl()); // Protect errno.
39 if (!g_fd_table)
40 g_fd_table = new FDTable(GetErrnoImpl(), MOJIO_CONFIG_MAX_NUM_FDS);
41 return g_fd_table;
42 }
43
44 void ResetFDTable() {
45 ErrnoImpl::Setter errno_setter(GetErrnoImpl()); // Protect errno.
46 delete g_fd_table;
47 g_fd_table = nullptr;
48 }
49
50 void SetCurrentWorkingDirectory(mojo::files::DirectoryPtr directory) {
51 delete g_current_working_directory;
52 g_current_working_directory =
53 new DirectoryWrapper(GetErrnoImpl(), directory.Pass());
54 }
55
56 DirectoryWrapper* GetCurrentWorkingDirectory() {
57 ErrnoImpl::Setter errno_setter(GetErrnoImpl());
58 if (!g_current_working_directory) {
59 // TODO(vtl): Ponder this error code. (This is, e.g., what openat() would
60 // return if its dirfd were not valid.)
61 errno_setter.Set(EBADF);
62 MOJO_LOG(ERROR) << "No current working directory";
63 return nullptr;
64 }
65
66 return g_current_working_directory;
67 }
68
69 void ResetCurrentWorkingDirectory() {
70 ErrnoImpl::Setter errno_setter(GetErrnoImpl()); // Protect errno.
71 delete g_current_working_directory;
72 g_current_working_directory = nullptr;
73 }
74
75 } // namespace singletons
76 } // namespace mojio
OLDNEW
« no previous file with comments | « mojo/services/files/public/c/lib/singletons.h ('k') | mojo/services/files/public/c/lib/template_util.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698