/
Cneon90
/
xServer
Обзор
Документация
Войти
/
Cneon90
/
xServer
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
main
Models/Commands/Base/command_base.h
70 строк
2 KB
Кирилл
reformat_command
20 фев 2026, 13:50
20 фев 2026, 13:50
92bf386
Код
Авторство
О чём код?
#ifndef COMMAND_BASE_H #define COMMAND_BASE_H // #include <QObject> #include <QMutex> // Для QMutex // #include <QMutexLocker> // Для QMutexLocker (автоматическая блокировка) // #include <QReadWriteLock> // Для QReadWriteLock // #include <QReadLocker> // Для QReadLocker (блокировка чтения) // #include <QWriteLocker> // Для QWriteLocker (блокировка записи) #include <QByteArray> #include <QDebug> #include "lib/TVZ_TOOL/TvzToolMessageBuilder.h" // Структура сообщения // typedef struct { // unsigned short usCmd; // Команда (2 байта) // unsigned char ucPar; // Параметр (1 байт) // unsigned char* pcData; // Указатель на данные // unsigned short usDataSize; // Текущий размер данных // unsigned short usDataMaxSize; // Максимальный размер данных (для выделенной памяти) // } Message; class CommandBase /*: public QObject*/ { // Q_OBJECT public: // explicit CommandBase(QObject *parent = nullptr); virtual ~CommandBase() = default; // virtual uint32_t get_command_code() = 0; // Обработка входящего запроса от клиента // pxSrcMessage - полученное сообщение от клиента // Возвращает true, если запрос обработан успешно virtual QByteArray response_processing(const QByteArray& response, const uint8_t param) = 0; // Формирование ответа клиенту // pxDstMessage - сообщение для отправки (заполняется командой) // Возвращает true, если ответ сформирован успешно // virtual QByteArray Response() = 0; // Получить ID команды virtual unsigned short Command() const = 0; // Получить название команды (для отладки) virtual QString getCommandName() const = 0; bool isError() { if(m_error) { m_error = false; return true; } return false; } protected: bool m_error = false; TvzToolMessageBuilder m_builder; QMutex m_mutex; // Mutex для конкретной команды signals: }; #endif // COMMAND_BASE_H