@@ -0,0 +1,31 | |||||
|
1 | #ifndef SCIQLOP_VARIABLECONTROLLER_H | |||
|
2 | #define SCIQLOP_VARIABLECONTROLLER_H | |||
|
3 | ||||
|
4 | #include <QLoggingCategory> | |||
|
5 | #include <QObject> | |||
|
6 | ||||
|
7 | #include <Common/spimpl.h> | |||
|
8 | ||||
|
9 | Q_DECLARE_LOGGING_CATEGORY(LOG_VariableController) | |||
|
10 | ||||
|
11 | /** | |||
|
12 | * @brief The VariableController class aims to handle the variables in SciQlop. | |||
|
13 | */ | |||
|
14 | class VariableController : public QObject { | |||
|
15 | Q_OBJECT | |||
|
16 | public: | |||
|
17 | explicit VariableController(QObject *parent = 0); | |||
|
18 | virtual ~VariableController(); | |||
|
19 | ||||
|
20 | public slots: | |||
|
21 | void initialize(); | |||
|
22 | void finalize(); | |||
|
23 | ||||
|
24 | private: | |||
|
25 | void waitForFinish(); | |||
|
26 | ||||
|
27 | class VariableControllerPrivate; | |||
|
28 | spimpl::unique_impl_ptr<VariableControllerPrivate> impl; | |||
|
29 | }; | |||
|
30 | ||||
|
31 | #endif // SCIQLOP_VARIABLECONTROLLER_H |
@@ -0,0 +1,46 | |||||
|
1 | #include <Variable/VariableController.h> | |||
|
2 | ||||
|
3 | #include <QMutex> | |||
|
4 | #include <QThread> | |||
|
5 | ||||
|
6 | Q_LOGGING_CATEGORY(LOG_VariableController, "VariableController") | |||
|
7 | ||||
|
8 | struct VariableController::VariableControllerPrivate { | |||
|
9 | explicit VariableControllerPrivate() | |||
|
10 | : m_WorkingMutex{} | |||
|
11 | { | |||
|
12 | } | |||
|
13 | ||||
|
14 | QMutex m_WorkingMutex; | |||
|
15 | }; | |||
|
16 | ||||
|
17 | VariableController::VariableController(QObject *parent) | |||
|
18 | : QObject{parent}, impl{spimpl::make_unique_impl<VariableControllerPrivate>()} | |||
|
19 | { | |||
|
20 | qCDebug(LOG_VariableController()) | |||
|
21 | << tr("VariableController construction") << QThread::currentThread(); | |||
|
22 | } | |||
|
23 | ||||
|
24 | VariableController::~VariableController() | |||
|
25 | { | |||
|
26 | qCDebug(LOG_VariableController()) | |||
|
27 | << tr("VariableController destruction") << QThread::currentThread(); | |||
|
28 | this->waitForFinish(); | |||
|
29 | } | |||
|
30 | ||||
|
31 | void VariableController::initialize() | |||
|
32 | { | |||
|
33 | qCDebug(LOG_VariableController()) << tr("VariableController init") << QThread::currentThread(); | |||
|
34 | impl->m_WorkingMutex.lock(); | |||
|
35 | qCDebug(LOG_VariableController()) << tr("VariableController init END"); | |||
|
36 | } | |||
|
37 | ||||
|
38 | void VariableController::finalize() | |||
|
39 | { | |||
|
40 | impl->m_WorkingMutex.unlock(); | |||
|
41 | } | |||
|
42 | ||||
|
43 | void VariableController::waitForFinish() | |||
|
44 | { | |||
|
45 | QMutexLocker locker{&impl->m_WorkingMutex}; | |||
|
46 | } |
@@ -16,6 +16,7 Q_DECLARE_LOGGING_CATEGORY(LOG_SqpApplication) | |||||
16 | #define sqpApp (static_cast<SqpApplication *>(QCoreApplication::instance())) |
|
16 | #define sqpApp (static_cast<SqpApplication *>(QCoreApplication::instance())) | |
17 |
|
17 | |||
18 | class DataSourceController; |
|
18 | class DataSourceController; | |
|
19 | class VariableController; | |||
19 | class VisualizationController; |
|
20 | class VisualizationController; | |
20 |
|
21 | |||
21 | /** |
|
22 | /** | |
@@ -36,6 +37,7 public: | |||||
36 |
|
37 | |||
37 | /// Accessors for the differents sciqlop controllers |
|
38 | /// Accessors for the differents sciqlop controllers | |
38 | DataSourceController &dataSourceController() const noexcept; |
|
39 | DataSourceController &dataSourceController() const noexcept; | |
|
40 | VariableController &variableController() const noexcept; | |||
39 | VisualizationController &visualizationController() const noexcept; |
|
41 | VisualizationController &visualizationController() const noexcept; | |
40 |
|
42 | |||
41 | private: |
|
43 | private: |
@@ -2,6 +2,7 | |||||
2 |
|
2 | |||
3 | #include <DataSource/DataSourceController.h> |
|
3 | #include <DataSource/DataSourceController.h> | |
4 | #include <QThread> |
|
4 | #include <QThread> | |
|
5 | #include <Variable/VariableController.h> | |||
5 | #include <Visualization/VisualizationController.h> |
|
6 | #include <Visualization/VisualizationController.h> | |
6 |
|
7 | |||
7 | Q_LOGGING_CATEGORY(LOG_SqpApplication, "SqpApplication") |
|
8 | Q_LOGGING_CATEGORY(LOG_SqpApplication, "SqpApplication") | |
@@ -10,9 +11,11 class SqpApplication::SqpApplicationPrivate { | |||||
10 | public: |
|
11 | public: | |
11 | SqpApplicationPrivate() |
|
12 | SqpApplicationPrivate() | |
12 | : m_DataSourceController{std::make_unique<DataSourceController>()}, |
|
13 | : m_DataSourceController{std::make_unique<DataSourceController>()}, | |
|
14 | m_VariableController{std::make_unique<VariableController>()}, | |||
13 | m_VisualizationController{std::make_unique<VisualizationController>()} |
|
15 | m_VisualizationController{std::make_unique<VisualizationController>()} | |
14 | { |
|
16 | { | |
15 | m_DataSourceController->moveToThread(&m_DataSourceControllerThread); |
|
17 | m_DataSourceController->moveToThread(&m_DataSourceControllerThread); | |
|
18 | m_VariableController->moveToThread(&m_VariableControllerThread); | |||
16 | m_VisualizationController->moveToThread(&m_VisualizationControllerThread); |
|
19 | m_VisualizationController->moveToThread(&m_VisualizationControllerThread); | |
17 | } |
|
20 | } | |
18 |
|
21 | |||
@@ -22,13 +25,18 public: | |||||
22 | m_DataSourceControllerThread.quit(); |
|
25 | m_DataSourceControllerThread.quit(); | |
23 | m_DataSourceControllerThread.wait(); |
|
26 | m_DataSourceControllerThread.wait(); | |
24 |
|
27 | |||
|
28 | m_VariableControllerThread.quit(); | |||
|
29 | m_VariableControllerThread.wait(); | |||
|
30 | ||||
25 | m_VisualizationControllerThread.quit(); |
|
31 | m_VisualizationControllerThread.quit(); | |
26 | m_VisualizationControllerThread.wait(); |
|
32 | m_VisualizationControllerThread.wait(); | |
27 | } |
|
33 | } | |
28 |
|
34 | |||
29 | std::unique_ptr<DataSourceController> m_DataSourceController; |
|
35 | std::unique_ptr<DataSourceController> m_DataSourceController; | |
|
36 | std::unique_ptr<VariableController> m_VariableController; | |||
30 | std::unique_ptr<VisualizationController> m_VisualizationController; |
|
37 | std::unique_ptr<VisualizationController> m_VisualizationController; | |
31 | QThread m_DataSourceControllerThread; |
|
38 | QThread m_DataSourceControllerThread; | |
|
39 | QThread m_VariableControllerThread; | |||
32 | QThread m_VisualizationControllerThread; |
|
40 | QThread m_VisualizationControllerThread; | |
33 | }; |
|
41 | }; | |
34 |
|
42 | |||
@@ -43,6 +51,11 SqpApplication::SqpApplication(int &argc, char **argv) | |||||
43 | connect(&impl->m_DataSourceControllerThread, &QThread::finished, |
|
51 | connect(&impl->m_DataSourceControllerThread, &QThread::finished, | |
44 | impl->m_DataSourceController.get(), &DataSourceController::finalize); |
|
52 | impl->m_DataSourceController.get(), &DataSourceController::finalize); | |
45 |
|
53 | |||
|
54 | connect(&impl->m_VariableControllerThread, &QThread::started, impl->m_VariableController.get(), | |||
|
55 | &VariableController::initialize); | |||
|
56 | connect(&impl->m_VariableControllerThread, &QThread::finished, impl->m_VariableController.get(), | |||
|
57 | &VariableController::finalize); | |||
|
58 | ||||
46 | connect(&impl->m_VisualizationControllerThread, &QThread::started, |
|
59 | connect(&impl->m_VisualizationControllerThread, &QThread::started, | |
47 | impl->m_VisualizationController.get(), &VisualizationController::initialize); |
|
60 | impl->m_VisualizationController.get(), &VisualizationController::initialize); | |
48 | connect(&impl->m_VisualizationControllerThread, &QThread::finished, |
|
61 | connect(&impl->m_VisualizationControllerThread, &QThread::finished, | |
@@ -50,6 +63,7 SqpApplication::SqpApplication(int &argc, char **argv) | |||||
50 |
|
63 | |||
51 |
|
64 | |||
52 | impl->m_DataSourceControllerThread.start(); |
|
65 | impl->m_DataSourceControllerThread.start(); | |
|
66 | impl->m_VariableControllerThread.start(); | |||
53 | impl->m_VisualizationControllerThread.start(); |
|
67 | impl->m_VisualizationControllerThread.start(); | |
54 | } |
|
68 | } | |
55 |
|
69 | |||
@@ -66,6 +80,11 DataSourceController &SqpApplication::dataSourceController() const noexcept | |||||
66 | return *impl->m_DataSourceController; |
|
80 | return *impl->m_DataSourceController; | |
67 | } |
|
81 | } | |
68 |
|
82 | |||
|
83 | VariableController &SqpApplication::variableController() const noexcept | |||
|
84 | { | |||
|
85 | return *impl->m_VariableController; | |||
|
86 | } | |||
|
87 | ||||
69 | VisualizationController &SqpApplication::visualizationController() const noexcept |
|
88 | VisualizationController &SqpApplication::visualizationController() const noexcept | |
70 | { |
|
89 | { | |
71 | return *impl->m_VisualizationController; |
|
90 | return *impl->m_VisualizationController; |
General Comments 0
You need to be logged in to leave comments.
Login now