/
MaximU
/
application
Обзор
Документация
Войти
/
MaximU
/
application
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
application.h
127 строк
6 KB
user
Упорядочены #include.
27 июл 2026, 14:34
27 июл 2026, 14:34
174be87
Код
Авторство
О чём код?
#ifndef APPLICATION_H #define APPLICATION_H #include <QSettings> #include <memory> #include "QtSingleApplication" #include "connection.h" #include "connectionclient.h" #include "connectionserver.h" #include "lockingqueue.h" #include "workerthread.h" /*! * \brief Класс приложения. */ class Application : public QtSingleApplication { friend class MainWindow; friend class WorkerThread; friend int main(int argc, char *argv[]); /*! * \brief Структура информации истории выдачи массивов выходной информации определенного типа. */ class History : public LockingQueue<std::shared_ptr<char[]>> { public: History(const QString &name, int maxCount, int altType); ~History(); QString name() const; int maxCount() const; int altType() const; std::shared_ptr<char[]> push(std::shared_ptr<char[]> data); private: QString mName; //!< Название. int mMaxCount; //!< Максимальное количество хранимых массивов информации. int mAltType; //!< Тип массва выходной информации, измененнный для исторической информации. }; Q_OBJECT public: Application(const QString &id, int &argc, char **argv); ~Application() override; void updateUi(); void logString(const QString &string, bool time = true); Connection * connectionById(int id); Connection * connectionByLabel(const QString &label); QList<History *> histories() const; protected: void enableHistory(int type, const QString &name, int maxCount, int newType); void addConnectionClient(ConnectionClient *client, const QList<int> types = QList<int>(), bool autoConnection = true); void addConnectionServer(ConnectionServer *server, const QList<int> types = QList<int>(), bool autoConnection = true); void taskStatusBegin(const QString ®imeName, int count); void taskStatusUpdate(int index); void taskStatusEnd(); private: QList<ConnectionClient *> mConnectionClients; //!< Cписок клиентских соединений. QList<ConnectionServer *> mConnectionServers; //!< Cписок серверных соединений. QMap<int, QList<int>> mTypesMap; //!< Карта типов массивов выходной информации и соответствующих им списков идентификаторов соединений. QMap<int, QList<int>> mTypesMapRev; //!< Карта идентификаторов соединений и соответствующих им списков типов массивов выходной информации. QMap<int, History *> mHistoryTypeMap; //!< Карта типов массивов выходной информации и соответствующих им списков исторических порций информации. void initApplication(); void exitApplication(); QString applicationCfgPath(); void readSettings(); void writeSettings(); void createData(); void clearData(); void deleteData(); void createConnections(); void startConnections(); void deleteConnections(); const QList<ConnectionClient *> & connectionClients(); const QList<ConnectionServer *> & connectionServers(); void input(std::shared_ptr<char[]> data); void record(std::shared_ptr<char[]> data); virtual void readSettingsSpecific(QSettings &settings) { Q_UNUSED(settings) } virtual void writeSettingsSpecific(QSettings &settings) { Q_UNUSED(settings) } virtual void createDataSpecific() {} virtual void clearDataSpecific() {} virtual void deleteDataSpecific() {} virtual void createConnectionsSpecific() {} virtual void connectionConnectedSpecific(ConnectionClient *client) { Q_UNUSED(client) } virtual void connectionDisconnectedSpecific(ConnectionClient *client) { Q_UNUSED(client) } virtual bool handleSpecific(std::shared_ptr<char[]> data) { Q_UNUSED(data); return false; } virtual void iterationDoneSpecific(const QSet<int> &results) { Q_UNUSED(results) } signals: void updateConnectionsTable(int eventId, int senderId); void updateProfilerTable(); void iterationDone(const QSet<int> &results); void log(const QString &string, bool time); void ui(); void setPropertyValue(const QString &, const QVariant &, bool, bool &); void taskProgressBegin(int id, int total); //!< Сигнал о начале прогресса задачи. void taskProgressStep(int id, int count, int total); //!< Сигнал об изменении прогресса задачи. void taskProgressEnd(int id); //!< Сигнал о завершении прогресса задачи. private slots: void slot_connection_connecting(ConnectionClient *); void slot_connection_connected(ConnectionClient *); void slot_connection_disconnected(ConnectionClient *); void slot_connection_beginWritePortion(Connection *); void slot_connection_endWritePortion(Connection *); void slot_connection_beginReadPortion(Connection *); void slot_connection_endReadPortion(Connection *); void slot_replay_endReadPortion(); void slot_workerThread_iterationDone(const QSet<int> &); void slot_workerThread_exception(const QString &); }; #define App (static_cast<ApplicationClass *>(QCoreApplication::instance())) std::shared_ptr<char[]> acquireInputBuffer(); void releaseInputBuffer(std::shared_ptr<char[]> buffer); std::shared_ptr<char[]> acquireInputData(); void releaseInputData(std::shared_ptr<char[]> buffer); std::shared_ptr<char[]> acquireOutputBuffer(); void releaseOutputBuffer(std::shared_ptr<char[]> buffer); void releaseOutputData(std::shared_ptr<char[]> buffer); #endif // APPLICATION_H