FileHandle.h 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. #pragma once
  2. #include "VirtualFileSystem.h"
  3. #include <AK/ByteBuffer.h>
  4. class FileHandle {
  5. public:
  6. explicit FileHandle(RetainPtr<VirtualFileSystem::Node>&&);
  7. ~FileHandle();
  8. Unix::off_t seek(Unix::off_t, int whence);
  9. Unix::ssize_t read(byte* buffer, Unix::size_t count);
  10. int stat(Unix::stat*);
  11. bool hasDataAvailableForRead();
  12. ssize_t get_dir_entries(byte* buffer, Unix::size_t);
  13. ByteBuffer readEntireFile();
  14. String absolutePath() const;
  15. bool isDirectory() const;
  16. VirtualFileSystem::Node* vnode() { return m_vnode.ptr(); }
  17. #ifdef SERENITY
  18. int fd() const { return m_fd; }
  19. void setFD(int fd) { m_fd = fd; }
  20. bool isBlocking() const { return m_isBlocking; }
  21. void setBlocking(bool b) { m_isBlocking = b; }
  22. #endif
  23. ByteBuffer& generatorCache() { return m_generatorCache; }
  24. private:
  25. friend class VirtualFileSystem;
  26. RetainPtr<VirtualFileSystem::Node> m_vnode;
  27. Unix::off_t m_currentOffset { 0 };
  28. ByteBuffer m_generatorCache;
  29. #ifdef SERENITY
  30. int m_fd { -1 };
  31. bool m_isBlocking { true };
  32. #endif
  33. };