// 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 createFile(mode_t mode) = 0; virtual std::shared_ptr createDirectory(mode_t mode) = 0; virtual std::shared_ptr createSymlink(std::string target) = 0; virtual ~Backend() = default; }; typedef backend_t (*backend_constructor_t)(void*); } // namespace wasmfs