SyntheticFileSystem.h 1.2 KB

123456789101112131415161718192021222324252627282930313233343536
  1. #pragma once
  2. #include "FileSystem.h"
  3. #include "UnixTypes.h"
  4. #include <AK/HashMap.h>
  5. class SyntheticFileSystem final : public FileSystem {
  6. public:
  7. virtual ~SyntheticFileSystem() override;
  8. static RetainPtr<SyntheticFileSystem> create();
  9. virtual bool initialize() override;
  10. virtual const char* className() const override;
  11. virtual InodeIdentifier rootInode() const override;
  12. virtual bool writeInode(InodeIdentifier, const ByteBuffer&) override;
  13. virtual bool enumerateDirectoryInode(InodeIdentifier, std::function<bool(const DirectoryEntry&)>) const override;
  14. virtual InodeMetadata inodeMetadata(InodeIdentifier) const override;
  15. virtual bool setModificationTime(InodeIdentifier, dword timestamp) override;
  16. virtual InodeIdentifier createInode(InodeIdentifier parentInode, const String& name, word mode) override;
  17. virtual ssize_t readInodeBytes(InodeIdentifier, Unix::off_t offset, size_t count, byte* buffer) const override;
  18. private:
  19. SyntheticFileSystem();
  20. struct File {
  21. String name;
  22. InodeMetadata metadata;
  23. ByteBuffer data;
  24. };
  25. OwnPtr<File> createTextFile(String&& name, String&& text);
  26. void addFile(OwnPtr<File>&&);
  27. Vector<OwnPtr<File>> m_files;
  28. };