ImagingTools Core SDK
CAsyncConnectionCheckerComp.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 <icomp/CComponentBase.h>
11
12// ImtCore includes
13#include <imtbase/IUrlParam.h>
14#include <imtcom/IConnectionStatusProvider.h>
15
16
17namespace imtcom
18{
19
20
339 public QObject,
340 public icomp::CComponentBase,
341 virtual public IConnectionStatusProvider
342{
343 Q_OBJECT
344public:
345 typedef icomp::CComponentBase BaseClass;
346
347 I_BEGIN_COMPONENT(CAsyncConnectionCheckerComp);
348 I_REGISTER_INTERFACE(IConnectionStatusProvider);
349 I_ASSIGN(m_prefixServer, "ServerPrefix", "Server prefix", true, "ServerPrefix");
350 I_ASSIGN(m_urlParamCompPtr, "UrlParam", "The object holds connection's url.", false, "UrlParam");
351 I_ASSIGN(m_checkIntervalAttrPtr, "CheckInterval", "Interval for backup timer (in sec)", false, 60);
352 I_END_COMPONENT;
353
355
356 void SendRequest();
357 void SetStatus(ConnectionStatus status);
358
359 // reimplemented (icomp::CComponentBase)
360 virtual void OnComponentCreated() override;
361 virtual void OnComponentDestroyed() override;
362
363 // reimplemented (IConnectionStatusProvider)
364 virtual ConnectionStatus GetConnectionStatus() const override;
365
366public Q_SLOTS:
367 void ReplyFinished();
368 void OnTimeout();
369
370private:
371 ConnectionStatus m_status;
372 QTimer m_timer;
373 QNetworkAccessManager* m_managerPtr;
374
375private:
376 I_ATTR(QByteArray, m_urlAttrPtr);
377 I_REF(imtbase::IUrlParam, m_urlParamCompPtr);
378 I_ATTR(QByteArray, m_prefixServer);
379 I_ATTR(int, m_checkIntervalAttrPtr);
380};
381
382
383} // namespace imtcom
384
385
Timer-based asynchronous connection status checker using HTTP requests.
Interface for monitoring network connection status with observable state changes.
ConnectionStatus
Connection status enumeration.
Server Communication and Connection Management Module.