ImagingTools Core SDK
CSystemStatusComp.h
1// SPDX-License-Identifier: LGPL-2.1-or-later OR GPL-2.0-or-later OR GPL-3.0-or-later OR LicenseRef-ImtCore-Commercial
2#pragma once
3
4
5// Qt includes
6#include <QtCore/QThread>
7#include <QtCore/QUrl>
8#include <QtCore/QTimer>
9#include <QtCore/QFutureWatcher>
10
11// ACF includes
12#include <ilog/TLoggerCompWrap.h>
13
14// ImtCore includes
15#include <imtbase/ISystemStatus.h>
16#include <imtbase/TModelUpdateBinder.h>
17#include <imtbase/IUrlParam.h>
18#include <imtcom/IConnectionStatusProvider.h>
19#include <imtdb/IDatabaseServerConnectionChecker.h>
20
21
22namespace imtbase
23{
24
25
26class CSystemStatusComp:
27 public QObject,
28 public ilog::CLoggerComponentBase,
29 virtual public imtbase::ISystemStatus
30{
31public:
32 typedef ilog::CLoggerComponentBase BaseClass;
33
34 I_BEGIN_COMPONENT(CSystemStatusComp);
35 I_REGISTER_INTERFACE(imtbase::ISystemStatus);
36 I_ASSIGN(m_connectionStatusProviderCompPtr, "ConnectionStatusProvider", "Server connection status provider", false, "ConnectionStatusProvider");
37 I_ASSIGN(m_dbServerConnectionCheckerCompPtr, "DatabaseServerConnectionChecker", "Database server connection status provider", false, "DatabaseServerConnectionChecker");
38 I_ASSIGN(m_slaveSystemStatusCompPtr, "SlaveSystemStatus", "Slave system status", false, "SlaveSystemStatus");
39 I_ASSIGN(m_checkIntervalAttrPtr, "CheckInterval", "Interval for backup timer (in sec)", false, 60);
40 I_ASSIGN(m_checkDbStatusAttrPtr, "CheckDatabaseStatus", "Check database system status", false, true);
41 I_ASSIGN(m_serverNameAttrPtr, "ServerName", "The name of the server to which the connection is being checked", false, "");
42 I_ASSIGN(m_urlParamCompPtr, "UrlParam", "The object holds connection's url.", false, "UrlParam");
43 I_END_COMPONENT;
44
45 CSystemStatusComp();
46
47 // reimplemented (ISystemStatus)
48 virtual SystemStatus GetSystemStatus(QString& errorMessage) const override;
49 virtual void UpdateSystemStatus() override;
50 virtual imtcom::IConnectionStatusProvider* GetConnectionStatusProvider() const override;
51 virtual imtdb::IDatabaseServerConnectionChecker* GetDatabaseServerConnectionStatusProvider() const override;
52
53protected:
54 // reimplemented (icomp::CComponentBase)
55 virtual void OnComponentCreated() override;
56 virtual void OnComponentDestroyed() override;
57
58 void OnUrlParamChanged(const istd::IChangeable::ChangeSet& changeSet, const imtbase::IUrlParam* urlParamPtr);
59
60private:
61 virtual bool StartCheckSystemStatus();
62 virtual bool StopCheckSystemStatus();
63 void SetStatus(SystemStatus status);
64 void OnCheckStatusFinished();
65 void OnTimeout();
66 void CheckStatus();
67
68private:
69 SystemStatus m_status;
70 QString m_statusMessage;
71 QTimer m_timer;
72 QFutureWatcher<void> m_checkStatusFutureWatcher;
73 SystemStatus m_futureResultStatus;
75 QUrl m_workingUrl;
76
77private:
78 I_REF(imtcom::IConnectionStatusProvider, m_connectionStatusProviderCompPtr);
79 I_REF(imtdb::IDatabaseServerConnectionChecker, m_dbServerConnectionCheckerCompPtr);
80 I_REF(imtbase::ISystemStatus, m_slaveSystemStatusCompPtr);
81 I_ATTR(int, m_checkIntervalAttrPtr);
82 I_ATTR(bool, m_checkDbStatusAttrPtr);
83 I_ATTR(QByteArray, m_serverNameAttrPtr);
84 I_REF(imtbase::IUrlParam, m_urlParamCompPtr);
85};
86
87
88} // namespace imtbase
89
90
Interface for monitoring network connection status with observable state changes.