| // Copyright 2015 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 SERVICES_FILES_C_LIB_SINGLETONS_H_ |
| #define SERVICES_FILES_C_LIB_SINGLETONS_H_ |
| |
| #include "files/public/interfaces/directory.mojom.h" |
| |
| namespace mojio { |
| |
| class DirectoryWrapper; |
| class ErrnoImpl; |
| class FDTable; |
| |
| namespace singletons { |
| |
| // Gets the singleton |ErrnoImpl| (creating it if necessary), which gets/sets |
| // the "real" errno. |
| ErrnoImpl* GetErrnoImpl(); |
| // Resets (destroys) the singleton |ErrnoImpl|. Warning: Do not call this unless |
| // things relying on the singleton |ErrnoImpl| have been reset first. |
| void ResetErrnoImpl(); |
| |
| // Gets the singleton |FDTable| (creating it if necessary, using |
| // MOJIO_CONFIG_MAX_NUM_FDS and the singleton |ErrnoImpl|). |
| FDTable* GetFDTable(); |
| // Resets (destroys) the singleton |FDTable|. |
| void ResetFDTable(); |
| |
| // Explicitly set the singleton current working directory to |directory| (which |
| // should be valid). (The singleton |DirectoryWrapper| will be reset if |
| // necessary.) This uses the singleton |ErrnoImpl|. |
| void SetCurrentWorkingDirectory(mojo::files::DirectoryPtr directory); |
| // Gets the current working directory (i.e., the singleton |DirectoryWrapper|). |
| // WARNING!!! This returns null if it was not previously set (see above) or has |
| // been reset, in which case it will also use the singleton |ErrnoImpl| (to set |
| // errno). |
| DirectoryWrapper* GetCurrentWorkingDirectory(); |
| // Resets (destroys) the singleton |DirectoryWrapper|. |
| void ResetCurrentWorkingDirectory(); |
| |
| } // namespace singletons |
| } // namespace mojio |
| |
| #endif // SERVICES_FILES_C_LIB_SINGLETONS_H_ |