FileBackedDiskDevice.h 973 B

1234567891011121314151617181920212223242526272829303132
  1. #pragma once
  2. #include "DiskDevice.h"
  3. #include <AK/RetainPtr.h>
  4. #include <AK/String.h>
  5. #include <AK/Types.h>
  6. #include <stdio.h>
  7. class FileBackedDiskDevice final : public DiskDevice {
  8. public:
  9. static RetainPtr<FileBackedDiskDevice> create(String&& imagePath, unsigned blockSize);
  10. virtual ~FileBackedDiskDevice() override;
  11. bool isValid() const { return m_file; }
  12. virtual unsigned blockSize() const override;
  13. virtual bool readBlock(unsigned index, byte* out) const override;
  14. virtual bool writeBlock(unsigned index, const byte*) override;
  15. virtual bool read(qword offset, unsigned length, byte* out) const override;
  16. virtual bool write(qword offset, unsigned length, const byte* data) override;
  17. private:
  18. virtual const char* className() const override;
  19. FileBackedDiskDevice(String&& imagePath, unsigned blockSize);
  20. String m_imagePath;
  21. FILE* m_file { nullptr };
  22. qword m_fileLength { 0 };
  23. unsigned m_blockSize { 0 };
  24. };