/
smychkov
/
SStorage
Обзор
Документация
Войти
/
smychkov
/
SStorage
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
src/cli/command.hpp
67 строк
3 KB
Андрей
feat: top N keys + scan stream (range/top/all) with pagination
14 июл 2026, 12:56
14 июл 2026, 12:56
56c6264
Код
Авторство
О чём код?
#ifndef SSTORAGE_CLI_COMMAND_HPP #define SSTORAGE_CLI_COMMAND_HPP //============================================================================ // CLI — интерактивный режим (put/get/del/scan/flush/compact/stats) //============================================================================ // Команды: // put <key> <value> — вставить/перезаписать (alias: p) // get <key> — прочитать (alias: g) // del <key> — удалить (alias: d, rm) // scan <from> <to> — диапазон (alias: s) // stats — статистика // flush — принудительный flush MemTable // compact — принудительный compaction // help — справка (alias: h) // exit / quit / q — выход //============================================================================ #include "../core/database.hpp" #include <iostream> #include <string> namespace sstorage { // Основной цикл интерактивного режима. // @return exit code (0 = успешный выход) int runInteractive(Database& db); //============================================================================ // CommandHandler — класс для диспетчеризации команд (удобен для тестов) //============================================================================ class CommandHandler { public: explicit CommandHandler(Database& db); // Injectable потоки для тестируемой пагинации. См. contract S2. CommandHandler(Database& db, std::istream& in, std::ostream& out); // Выполнить команду. // @param command — имя команды (put, get, del, ...) // @param args — строка аргументов (до первого пробела — ключ, далее — значение) // @return 0 — OK, 1 — ошибка, -1 — запрошен выход int execute(const std::string& command, const std::string& args); // Напечатать help. static void printHelp(std::ostream& out = std::cout); private: int cmdPut(const std::string& args); int cmdGet(const std::string& args); int cmdDel(const std::string& args); int cmdScan(const std::string& args); int cmdStats(); int cmdFlush(); int cmdCompact(); Database& db_; std::istream& in_; std::ostream& out_; }; // Разобрать строку на команду + аргументы. // @return false если строка пустая bool parseCommand(const std::string& line, std::string& command, std::string& args); } #endif