Program Listing for File FdManager.h

Program Listing for File FdManager.h#

Return to documentation for file (src/io/FdManager.h)

#pragma once

/* toolchain */
#include <iostream>

/* internal */
#include "../result.h"
#include "file_descriptors.h"

namespace Coral
{

class FdManager
{
  public:
    static constexpr std::string default_group = "root";

    using FdGroup = std::map<std::string, FdMap>;

    FdManager() : groups()
    {
    }

    ~FdManager();

    Result add_file_fd(const std::string path,
                       const std::string mode = default_open_mode,
                       const std::string group = default_group);

    FdMap &fd_group(const std::string group = default_group);

    Result add_fd(const std::string name, int fd,
                  const std::string group = default_group);

    int &operator[](const std::string name);

  protected:
    FdGroup groups;
};

} // namespace Coral