DirectoryInode.h 915 B

12345678910111213141516171819202122232425262728293031
  1. /*
  2. * Copyright (c) 2021, Liav A. <liavalb@hotmail.co.il>
  3. *
  4. * SPDX-License-Identifier: BSD-2-Clause
  5. */
  6. #pragma once
  7. #include <Kernel/FileSystem/SysFS/Inode.h>
  8. namespace Kernel {
  9. class SysFSDirectoryInode : public SysFSInode {
  10. friend class SysFS;
  11. public:
  12. static ErrorOr<NonnullLockRefPtr<SysFSDirectoryInode>> try_create(SysFS const&, SysFSComponent const&);
  13. virtual ~SysFSDirectoryInode() override;
  14. SysFS& fs() { return static_cast<SysFS&>(Inode::fs()); }
  15. SysFS const& fs() const { return static_cast<SysFS const&>(Inode::fs()); }
  16. protected:
  17. SysFSDirectoryInode(SysFS const&, SysFSComponent const&);
  18. // ^Inode
  19. virtual InodeMetadata metadata() const override;
  20. virtual ErrorOr<void> traverse_as_directory(Function<ErrorOr<void>(FileSystem::DirectoryEntryView const&)>) const override;
  21. virtual ErrorOr<NonnullLockRefPtr<Inode>> lookup(StringView name) override;
  22. };
  23. }