SVCS - Русская документация
Загрузка...
Поиск...
Не найдено
ObjectStorage.hxx
См. документацию.
1
19#pragma once
20
21#include "VcsObject.hxx"
22#include <filesystem>
23#include <string>
24#include <memory>
25#include <utility>
27
37 * @brief Основные структуры данных СКВ и модель объектов.
38 * @details Содержит фундаментальные типы объектов СКВ, такие как Blob, Tree, Commit,
39 * которые формируют строительные блоки системы контроля версий.
40 */
41namespace svcs::core {
42
43using namespace svcs::services;
44
58class ObjectStorage {
59private:
67 const std::filesystem::path objects_dir;
68
76 std::shared_ptr<ISubject> subject;
77
91 [[nodiscard]] std::string compress(const std::string& data) const;
92
106 [[nodiscard]] std::string decompress(const std::string& compressed_data) const;
107
125 [[nodiscard]] std::unique_ptr<VcsObject> createObjectFromContent(
126 const std::string& type,
127 const std::string& content
128 ) const;
129
130public:
133
142 explicit ObjectStorage(const std::string& root_path, const std::shared_ptr<ISubject>& subject = nullptr);
143
151 virtual ~ObjectStorage();
152
162 void setSubject(std::shared_ptr<ISubject> subj) { subject = std::move(subj); };
163
179 [[nodiscard]] std::string getObjectPath(const std::string& hash) const;
180
198 [[nodiscard]] virtual bool saveObject(const VcsObject& obj) const;
199
217 [[nodiscard]] virtual std::unique_ptr<VcsObject> loadObject(const std::string& hash) const;
218
230 [[nodiscard]] bool objectExists(const std::string& hash) const;
231};
232
233}
Определяет интерфейс для компонента Subject (Издатель) шаблона Observer.
Определение абстрактного базового класса для всех объектов системы контроля версий.
ObjectStorage(const std::string &root_path, const std::shared_ptr< ISubject > &subject=nullptr)
Конструктор для ObjectStorage.
Определения ObjectStorage.cxx:35
void setSubject(std::shared_ptr< ISubject > subj)
Устанавливает или заменяет субъект событий, используемый ObjectStorage.
Определения ObjectStorage.hxx:95
virtual std::unique_ptr< VcsObject > loadObject(const std::string &hash) const
Загружает объект с диска по его ID хеша.
Определения ObjectStorage.cxx:150
virtual ~ObjectStorage()
Деструктор.
Определения ObjectStorage.cxx:60
bool objectExists(const std::string &hash) const
Проверяет, существует ли объект с заданным хешем на диске.
Определения ObjectStorage.cxx:357
std::string getObjectPath(const std::string &hash) const
Формирует полный путь в файловой системе для объекта на основе его хеша.
Определения ObjectStorage.cxx:64
virtual bool saveObject(const VcsObject &obj) const
Сохраняет VcsObject в базе данных объектов.
Определения ObjectStorage.cxx:82
Абстрактный базовый класс, представляющий любой сохраняемый, адресуемый объект в СКВ.
Определения VcsObject.hxx:30
Основные структуры данных СКВ и модель объектов.
Компоненты сервисного слоя и инфраструктурные сервисы.