#pragma once
#include "fs/VFS.h"
#include <stdint.h>

struct Descriptor
{
    bool is_open()
    {
        return m_is_open;
    }

    bool can_read()
    {
        return m_can_read && m_is_open;
    }

    void close()
    {
        m_is_open = false;
    }

    ssize_t read(size_t size, char* buffer);

    void open(VFS::Node* node, bool can_read);

    Descriptor(const Descriptor& other);
    Descriptor();

  private:
    bool m_is_open;
    bool m_can_read;
    VFS::Node* m_node;
    uint64_t m_offset;
};