mirror of
https://github.com/TomHarte/CLK.git
synced 2025-11-23 21:17:42 +00:00
49 lines
1.2 KiB
C++
49 lines
1.2 KiB
C++
//
|
|
// FileBundle.hpp
|
|
// Clock Signal
|
|
//
|
|
// Created by Thomas Harte on 19/11/2025.
|
|
// Copyright © 2025 Thomas Harte. All rights reserved.
|
|
//
|
|
|
|
#pragma once
|
|
|
|
#include "Storage/FileHolder.hpp"
|
|
#include <optional>
|
|
#include <string>
|
|
|
|
namespace Storage::FileBundle {
|
|
|
|
/*!
|
|
A File Bundle is a collection of individual files, abstracted from whatever media they might
|
|
be one.
|
|
|
|
Initial motivation is allowing some machines direct local filesystem access. An attempt has
|
|
been made to draft this in such a way as to allow it to do things like expose ZIP files as
|
|
bundles in the future.
|
|
*/
|
|
struct FileBundle {
|
|
virtual std::optional<std::string> key_file() = 0;
|
|
virtual FileHolder open(const std::string &, FileMode) = 0;
|
|
virtual bool erase(const std::string &) = 0;
|
|
|
|
virtual std::optional<std::string> base_path() = 0;
|
|
};
|
|
|
|
|
|
struct LocalFSFileBundle: public FileBundle {
|
|
LocalFSFileBundle(const std::string &to_contain);
|
|
|
|
std::optional<std::string> key_file() override;
|
|
FileHolder open(const std::string &, FileMode) override;
|
|
bool erase(const std::string &) override;
|
|
|
|
std::optional<std::string> base_path() override;
|
|
|
|
private:
|
|
std::string key_file_;
|
|
std::string base_path_;
|
|
};
|
|
|
|
};
|