SVCS - Русская документация
Загрузка...
Поиск...
Не найдено
ServerBaseCommand.hxx
См. документацию.
1
19
20#pragma once
21
26
27#include <memory>
28#include <string>
29
45 * Это пространство имен связывает серверную функциональность с интерфейсом командной строки.
46 */
47namespace svcs::server::cli {
48
49using namespace svcs::core;
50using namespace svcs::cli;
51using namespace svcs::services;
52
70class ServerBaseCommand : public ICommand {
71public:
83 ServerBaseCommand(std::shared_ptr<ISubject> event_bus,
84 std::shared_ptr<RepositoryManager> repo_manager);
85
93 virtual ~ServerBaseCommand() = default;
94
106 [[nodiscard]] virtual std::string getName() const override = 0;
107
119 [[nodiscard]] virtual std::string getDescription() const override = 0;
120
132 [[nodiscard]] virtual std::string getUsage() const override = 0;
133
147 virtual bool execute(const std::vector<std::string>& args) override = 0;
148
158 virtual void showHelp() const override = 0;
159
160protected:
172 void notifyInfo(const std::string& message) const;
173
185 void notifyError(const std::string& message) const;
186
194 std::shared_ptr<ISubject> event_bus_;
195
203 std::shared_ptr<RepositoryManager> repo_manager_;
204};
205
206}
Определяет структуру события, используемую для уведомлений по шаблону Observer.
Объявление интерфейса ICommand для всех исполняемых CLI команд.
Определяет интерфейс для компонента Subject (Издатель) шаблона Observer.
Declaration of the RepositoryManager class, managing all repository-level file operations.
Интерфейс (абстрактный базовый класс) для всех команд, выполняемых через CLI.
Определения ICommand.hxx:31
virtual std::string getDescription() const override=0
Чисто виртуальный метод для получения описания команды.
virtual ~ServerBaseCommand()=default
Виртуальный деструктор для корректной очистки производных классов.
virtual std::string getName() const override=0
Чисто виртуальный метод для получения имени команды.
std::shared_ptr< ISubject > event_bus_
Общий указатель на шину событий для системных уведомлений.
Определения ServerBaseCommand.hxx:113
virtual std::string getUsage() const override=0
Чисто виртуальный метод для получения синтаксиса использования команды.
void notifyInfo(const std::string &message) const
Отправляет информационное уведомление через шину событий.
Определения ServerBaseCommand.cxx:23
virtual void showHelp() const override=0
Чисто виртуальный метод для отображения подробной справочной информации.
ServerBaseCommand(std::shared_ptr< ISubject > event_bus, std::shared_ptr< RepositoryManager > repo_manager)
Конструирует ServerBaseCommand с необходимыми зависимостями.
Определения ServerBaseCommand.cxx:16
virtual bool execute(const std::vector< std::string > &args) override=0
Чисто виртуальный метод для выполнения логики команды.
std::shared_ptr< RepositoryManager > repo_manager_
Общий указатель на менеджер репозиториев для операций с репозиториями.
Определения ServerBaseCommand.hxx:118
void notifyError(const std::string &message) const
Отправляет уведомление об ошибке через шину событий.
Определения ServerBaseCommand.cxx:30
Компоненты командной строки и реализации команд.
Основные структуры данных СКВ и модель объектов.
Компоненты командной строки для администрирования сервера.
Компоненты сервисного слоя и инфраструктурные сервисы.