67 const std::filesystem::path objects_dir;
76 std::shared_ptr<ISubject> subject;
91 [[nodiscard]] std::string compress(
const std::string& data)
const;
106 [[nodiscard]] std::string decompress(
const std::string& compressed_data)
const;
125 [[nodiscard]] std::unique_ptr<VcsObject> createObjectFromContent(
126 const std::string& type,
127 const std::string& content
142 explicit ObjectStorage(
const std::string& root_path,
const std::shared_ptr<ISubject>& subject =
nullptr);
162 void setSubject(std::shared_ptr<ISubject> subj) { subject = std::move(subj); };
179 [[nodiscard]] std::string
getObjectPath(
const std::string& hash)
const;
217 [[nodiscard]]
virtual std::unique_ptr<VcsObject>
loadObject(
const std::string& hash)
const;
230 [[nodiscard]]
bool objectExists(
const std::string& hash)
const;
Определяет интерфейс для компонента 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
Основные структуры данных СКВ и модель объектов.
Компоненты сервисного слоя и инфраструктурные сервисы.