/
MaximU
/
application
Обзор
Документация
Войти
/
MaximU
/
application
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
connectionclient.h
88 строк
3 KB
Максим
Упорядочены #include-ы.
15 июл 2026, 22:13
15 июл 2026, 22:13
ee4913b
Код
Авторство
О чём код?
#ifndef CONNECTIONCLIENT_H #define CONNECTIONCLIENT_H #include <QDateTime> #include <QIODevice> #include <QTimer> #include "connection.h" #include <memory> /*! * \brief Родительский класс для клиентских соединений различных типов (Tcp, Usb и т.д.). */ class ConnectionClient : public Connection { friend class ConnectionServer; Q_OBJECT public: /*! * \brief Перечисление идентификаторов состояния соединения. */ enum States { StateUndefined = -1, //!< Не определен. StateUnconnected, //!< Нет соединения. StateConnecting, //!< Подключение... StateConnected, //!< Есть соединение. StateDisconnecting //!< Отключение... }; public: ConnectionClient(int id, const QString &name, const QString &label, QIODevice *device = nullptr); ~ConnectionClient() override; void open() override; void close() override; QIODevice *device(); void setReconnect(bool reconnect); int attempts(); States state(); bool isConnected(); bool isReading(); bool isWriting(); QDateTime timeConnect(); QDateTime timeDisconnect(); QDateTime timeReceive(); QDateTime timeSend(); static QString toString(States state); virtual void read(char *data, int maxSize); void write(const char *data, int maxSize) override; protected: virtual void connect() = 0; virtual void disconnect() = 0; virtual void readDevice() = 0; void repeat(); void acquireBuffer(); void releaseData(); void releaseBuffer(); protected: QIODevice *mDevice; //!< Устройство ввода/вывода. QTimer mTimerReconnect; //!< Таймер повторного подключения. bool mReconnect = false; //!< Признак восстановления связи после разрыва. int mAttempts = 0; //!< Счетчик попыток установления соединения. States mState = StateUnconnected; //!< Идентификатор состояния соединения. bool mReading = false; //!< Признак выполнения чтения. bool mWriting = false; //!< Признак выполнения записи. QDateTime mTimeConnect; //!< Время соединения. QDateTime mTimeDisconnect; //!< Время разрыва. QDateTime mTimeReceive; //!< Время приема. QDateTime mTimeSend; //!< Время выдачи. std::shared_ptr<char[]> mBuffer = nullptr; //!< Буфер приема. unsigned int mBytesRead = 0; //!< Количество принятых байт порции. signals: void connecting(ConnectionClient *); void connected(ConnectionClient *); void disconnected(ConnectionClient *); protected slots: void slot_timer_timeout(); void slot_device_connected(); void slot_device_disconnected(); void slot_device_readyRead(); }; #endif // CONNECTIONCLIENT_H