ImagingTools Core SDK
CInternetConnectionCheckerComp.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/QTimer>
7#include <QtNetwork/QNetworkAccessManager>
8
9// ACF includes
10#include <ilog/TLoggerCompWrap.h>
11
12// ImtCore includes
13#include <imtbase/IUrlParam.h>
14#include <imtcom/IConnectionStatusProvider.h>
15
16
17namespace imtcom
18{
19
20
21class CInternetConnectionCheckerComp:
22 public QObject,
23 public ilog::CLoggerComponentBase,
24 virtual public IConnectionStatusProvider
25{
26 Q_OBJECT
27public:
28 typedef ilog::CLoggerComponentBase BaseClass;
29
30 I_BEGIN_COMPONENT(CInternetConnectionCheckerComp);
31 I_REGISTER_INTERFACE(IConnectionStatusProvider);
32 I_ASSIGN(m_urlParamCompPtr, "UrlParam", "URL Param", false, "UrlParam");
33 I_ASSIGN(m_urlAttrPtr, "Url", "URL to check availability, if UrlParam is invalid", true, "https://google.com");
34 I_ASSIGN(m_requestTimeoutAttrPtr, "RequestTimeout", "Request timeout", true, 1000)
35 I_ASSIGN(m_requestDelayAttrPtr, "RequestDelay", "Delay between two consecutive requests", true, 1000);
36 I_ASSIGN(m_retryCountAttrPtr, "RetryCount", "Number of retries after failure before going offline", true, 10);
37 I_END_COMPONENT;
38
39 CInternetConnectionCheckerComp();
40
41 // reimplemented (IConnectionStatusProvider)
42 virtual ConnectionStatus GetConnectionStatus() const override;
43
44protected:
45 // reimplemented (icomp::CComponentBase)
46 virtual void OnComponentCreated() override;
47 virtual void OnComponentDestroyed() override;
48
49private Q_SLOTS:
50 void OnTimer();
51 void OnRequestFinished();
52
53private:
54 void SendRequest();
55
56private:
57 I_REF(imtbase::IUrlParam, m_urlParamCompPtr);
58 I_ATTR(QString, m_urlAttrPtr);
59 I_ATTR(int, m_requestTimeoutAttrPtr);
60 I_ATTR(int, m_requestDelayAttrPtr);
61 I_ATTR(int, m_retryCountAttrPtr);
62
63 ConnectionStatus m_status;
64 QTimer m_timer;
65 QNetworkAccessManager* m_managerPtr;
66
67 int m_requestTimeout;
68 int m_requestDelay;
69 int m_retryCount;
70 int m_retryCounter;
71};
72
73
74} // namespace imtcom
75
76
ConnectionStatus
Connection status enumeration.
Server Communication and Connection Management Module.