Абстрактный базовый класс, представляющий любой сохраняемый, адресуемый объект в СКВ.
Подробнее...
#include <VcsObject.hxx>
|
|
| VcsObject ()=default |
| | Конструктор по умолчанию. Требуется для производных классов.
|
| | VcsObject (const VcsObject &other)=default |
| | Конструктор копирования. Требуется для производных классов для корректного копирования hash_id.
|
| virtual | ~VcsObject ()=default |
| | Виртуальный деструктор.
|
| virtual std::string | serialize () const =0 |
| | Чисто виртуальный метод для сериализации основных данных объекта.
|
| virtual std::string | getType () const =0 |
| | Чисто виртуальный метод для получения типа объекта СКВ.
|
| std::string | getHashId () const |
| | Возвращает уникальный хеш-идентификатор объекта.
|
|
| static std::string | calculateHash (const std::string &content) |
| | Вычисляет SHA-256 хеш для заданного канонического содержимого.
|
|
| void | computeHash (const std::string &content) |
| | Вычисляет криптографический хеш-идентификатор для содержимого объекта.
|
|
| std::string | hash_id |
| | Уникальный криптографический хеш-идентификатор (например, SHA-256) для этого объекта.
|
Абстрактный базовый класс, представляющий любой сохраняемый, адресуемый объект в СКВ.
VcsObject обеспечивает обязательное наличие хеш-идентификатора, логики сериализации и идентификации типа для всех производных классов. Он служит основной доменной сущностью для базы данных объектов.
◆ VcsObject()
| svcs::core::VcsObject::VcsObject |
( |
const VcsObject & | other | ) |
|
|
default |
Конструктор копирования. Требуется для производных классов для корректного копирования hash_id.
- Аргументы
-
◆ ~VcsObject()
| virtual svcs::core::VcsObject::~VcsObject |
( |
| ) |
|
|
virtualdefault |
Виртуальный деструктор.
Обеспечивает правильную очистку при удалении производных объектов через указатель на базовый класс.
◆ calculateHash()
| std::string svcs::core::VcsObject::calculateHash |
( |
const std::string & | content | ) |
|
|
static |
Вычисляет SHA-256 хеш для заданного канонического содержимого.
- Аргументы
-
| content | Содержимое объекта Git-формата (header + raw_data). |
- Возвращает
- std::string Вычисленный 64-символьный хеш.
◆ computeHash()
| void svcs::core::VcsObject::computeHash |
( |
const std::string & | content | ) |
|
|
protected |
Вычисляет криптографический хеш-идентификатор для содержимого объекта.
Этот метод должен добавлять тип объекта и длину содержимого (в стиле Git) перед хешированием полного содержимого и установкой внутреннего hash_id.
- Аргументы
-
| content | Сериализованные строковые данные объекта (обычно возвращаемые serialize()). |
◆ getHashId()
| std::string svcs::core::VcsObject::getHashId |
( |
| ) |
const |
|
nodiscard |
Возвращает уникальный хеш-идентификатор объекта.
- Возвращает
- std::string Криптографический хеш-идентификатор.
◆ getType()
| virtual std::string svcs::core::VcsObject::getType |
( |
| ) |
const |
|
nodiscardpure virtual |
◆ serialize()
| virtual std::string svcs::core::VcsObject::serialize |
( |
| ) |
const |
|
nodiscardpure virtual |
◆ hash_id
| std::string svcs::core::VcsObject::hash_id |
|
protected |
Уникальный криптографический хеш-идентификатор (например, SHA-256) для этого объекта.
Защищенный, чтобы разрешить внутреннюю установку через computeHash(), но предотвратить внешнее изменение.
Объявления и описания членов классов находятся в файлах: