SVCS - Русская документация
Загрузка...
Поиск...
Не найдено
Класс svcs::core::ObjectStorage

Управляет базой данных объектов системы контроля версий, включая сохранение и восстановление объектов. Подробнее...

#include <ObjectStorage.hxx>

Граф наследования:svcs::core::ObjectStorage:
svcs::test::core::MockObjectStorage

Открытые члены

 ObjectStorage (const std::string &root_path, const std::shared_ptr< ISubject > &subject=nullptr)
 Конструктор для ObjectStorage.
virtual ~ObjectStorage ()
 Деструктор.
void setSubject (std::shared_ptr< ISubject > subj)
 Устанавливает или заменяет субъект событий, используемый ObjectStorage.
std::string getObjectPath (const std::string &hash) const
 Формирует полный путь в файловой системе для объекта на основе его хеша.
virtual bool saveObject (const VcsObject &obj) const
 Сохраняет VcsObject в базе данных объектов.
virtual std::unique_ptr< VcsObjectloadObject (const std::string &hash) const
 Загружает объект с диска по его ID хеша.
bool objectExists (const std::string &hash) const
 Проверяет, существует ли объект с заданным хешем на диске.

Подробное описание

Управляет базой данных объектов системы контроля версий, включая сохранение и восстановление объектов.

Реализует низкоуровневые операции файловой системы (генерация путей, чтение, запись), сжатие, распаковку и десериализацию объектов.

Конструктор(ы)

◆ ObjectStorage()

svcs::core::ObjectStorage::ObjectStorage ( const std::string & root_path,
const std::shared_ptr< ISubject > & subject = nullptr )
explicit

Конструктор для ObjectStorage.

Аргументы
root_pathКорневой путь репозитория (например, директория, содержащая ".svcs").
subjectОбщий указатель на интерфейс ISubject для логирования событий. По умолчанию nullptr, если логирование пока не требуется.

Методы

◆ getObjectPath()

std::string svcs::core::ObjectStorage::getObjectPath ( const std::string & hash) const
nodiscard

Формирует полный путь в файловой системе для объекта на основе его хеша.

Использует первые два символа хеша для имени поддиректории и оставшиеся 38 символов для имени файла.

Аргументы
hashПолный 40-символьный ID хеша SHA-1.
Возвращает
std::string Полный, независимый от платформы путь к файлу.

◆ loadObject()

std::unique_ptr< VcsObject > svcs::core::ObjectStorage::loadObject ( const std::string & hash) const
nodiscardvirtual

Загружает объект с диска по его ID хеша.

Читает сжатый файл, распаковывает его, выполняет проверки целостности и десериализует объект с использованием внутреннего фабричного метода.

Аргументы
hashID хеша объекта для загрузки.
Возвращает
std::unique_ptr<VcsObject> Восстановленный экземпляр объекта.
Исключения
std::runtime_errorесли объект не найден, поврежден или недействителен.

Переопределяется в svcs::test::core::MockObjectStorage.

◆ objectExists()

bool svcs::core::ObjectStorage::objectExists ( const std::string & hash) const
nodiscard

Проверяет, существует ли объект с заданным хешем на диске.

Аргументы
hashID хеша для проверки.
Возвращает
bool True, если файл объекта существует.

◆ saveObject()

bool svcs::core::ObjectStorage::saveObject ( const VcsObject & obj) const
nodiscardvirtual

Сохраняет VcsObject в базе данных объектов.

Сериализует объект, добавляет заголовок, сжимает его и записывает в файл. Публикует события об успехе/неудаче.

Аргументы
objVcsObject для сохранения.
Возвращает
bool True, если сохранение прошло успешно.
Исключения
std::runtime_errorесли хеш недействителен или операции ввода-вывода завершаются неудачно.

Переопределяется в svcs::test::core::MockObjectStorage.

◆ setSubject()

void svcs::core::ObjectStorage::setSubject ( std::shared_ptr< ISubject > subj)
inline

Устанавливает или заменяет субъект событий, используемый ObjectStorage.

Аргументы
subjНовый указатель ISubject для использования при публикации событий.

Объявления и описания членов классов находятся в файлах: