// Copyright (C) 2021 basysKom GmbH, opensource@basyskom.com // SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only // // W A R N I N G // ------------- // // This file is not part of the Qt API. It exists purely as an // implementation detail. This header file may change from version to // version without notice, or even be removed. // // We mean it. // #ifndef QOPCUAHISTORYREADRESPONSEIMPL_H #define QOPCUAHISTORYREADRESPONSEIMPL_H #include #include #include #include #include #include QT_BEGIN_NAMESPACE class Q_OPCUA_EXPORT QOpcUaHistoryReadResponseImpl : public QObject { Q_OBJECT public: QOpcUaHistoryReadResponseImpl(const QOpcUaHistoryReadRawRequest &request); QOpcUaHistoryReadResponseImpl(const QOpcUaHistoryReadEventRequest &request); ~QOpcUaHistoryReadResponseImpl(); bool hasMoreData() const; bool readMoreData(); QOpcUaHistoryReadResponse::State state() const; bool releaseContinuationPoints(); QList data() const; QList events() const; QOpcUa::UaStatusCode serviceResult() const; Q_INVOKABLE void handleDataAvailable(const QList &data, const QList &continuationPoints, QOpcUa::UaStatusCode serviceResult, quint64 responseHandle); Q_INVOKABLE void handleEventsAvailable(const QList &data, const QList &continuationPoints, QOpcUa::UaStatusCode serviceResult, quint64 responseHandle); Q_INVOKABLE void handleRequestError(quint64 requestHandle); quint64 handle() const; Q_SIGNALS: void historyReadRawRequested(QOpcUaHistoryReadRawRequest request, QList continuationPoints, bool releaseContinuationPoints, quint64 handle); void historyReadEventsRequested(QOpcUaHistoryReadEventRequest request, QList continuationPoints, bool releaseContinuationPoints, quint64 handle); void readHistoryDataFinished(QList results, QOpcUa::UaStatusCode serviceResult); void readHistoryEventsFinished(QList results, QOpcUa::UaStatusCode serviceResult); void stateChanged(QOpcUaHistoryReadResponse::State state); protected: void setState(QOpcUaHistoryReadResponse::State state); QOpcUaHistoryReadRawRequest createReadRawRequestWithContinuationPoints(); QOpcUaHistoryReadEventRequest createEventRequestWithContinuationPoints(); private: enum class RequestType { Unknown, ReadRaw, ReadEvent }; QOpcUaHistoryReadResponse::State m_state = QOpcUaHistoryReadResponse::State::Reading; QList m_continuationPoints; RequestType m_requestType = RequestType::Unknown; QOpcUaHistoryReadRawRequest m_readRawRequest; QOpcUaHistoryReadEventRequest m_readEventRequest; QList m_data; QList m_events; QOpcUa::UaStatusCode m_serviceResult = QOpcUa::UaStatusCode::Good; QList m_dataMapping; static quint64 m_currentHandle; quint64 m_handle = 0; }; QT_END_NAMESPACE #endif // QOPCUAHISTORYREADRESPONSEIMPL_H