Внимание! Это задание - черновик.
Нужно реализовать библиотеку для работы с файловым хранилищем.
Библиотека должна предоставлять реализацию интерфейса KeyValueStorage. Также нужно реализовать фабрику KeyValueStorageFactory, которая будет порождать объекты хранилища. Также потребуется написать стратегии сериализации для ключей и значений.
Все данные должны храниться в указанной при создании хранилища директории, в файле storage.db
Данные лежат в бинарном файле следующего формата:
Ключ 1, Смещение значения 1, Ключ 2,
Смещение значения 2, ..., Ключ N,
Смещение значения N, Значение 1,
Значение 2, ..., Значение N
Запятой и пробелов в формате нет, там должно лежать только бинарное представление требуемых величин. Ключи внутри файла должны быть отсортированы.
TODO тестирование через юнит-тест
- При запуске приложения нужно убедиться, что директория, в которой предлагается работать, существует.
- Если файла для хранилища нет, его надо создать; если он есть - надо убедиться, что с ним все в порядке.
- При чтении из файла нужно проверять его валидность, избегать слишком больших и маленьких значений буферов.
- Бинарный формат должен быть строго соблюден.