| // Copyright 2021 The Emscripten Authors. All rights reserved. |
| // Emscripten is available under two separate licenses, the MIT license and the |
| // University of Illinois/NCSA Open Source License. Both these licenses can be |
| // found in the LICENSE file. |
| |
| // This file defines the modular backend abstract class. |
| // Other file system backends can use this to interface with the new file |
| // system. Current Status: Work in Progress. See |
| // https://github.com/emscripten-core/emscripten/issues/15041. |
| |
| #pragma once |
| |
| #include "file.h" |
| |
| namespace wasmfs { |
| // A backend (or modular backend) provides a base for the new file system to |
| // extend its storage capabilities. Files and directories will be represented |
| // in the file system structure, but their underlying backing could exist in |
| // persistent storage, another thread, etc. |
| class Backend { |
| |
| public: |
| virtual std::shared_ptr<DataFile> createFile(mode_t mode) = 0; |
| virtual std::shared_ptr<Directory> createDirectory(mode_t mode) = 0; |
| virtual std::shared_ptr<Symlink> createSymlink(std::string target) = 0; |
| |
| virtual ~Backend() = default; |
| }; |
| |
| typedef backend_t (*backend_constructor_t)(void*); |
| } // namespace wasmfs |