diff options
author | Jonatan Pålsson <jonatan.palsson@pelagicore.com> | 2014-02-20 14:26:01 +0100 |
---|---|---|
committer | Jonatan Pålsson <jonatan.palsson@pelagicore.com> | 2014-02-20 14:26:01 +0100 |
commit | 483e1b7cb3fd8f9f834c256e3b97096de39399e8 (patch) | |
tree | 1ca5e512e92dfb427c45763183cc69efd8e2dc55 | |
parent | 9be931c65dcb3f6a3e210bc4c7c52feacf3f61fd (diff) | |
download | browser-poc-483e1b7cb3fd8f9f834c256e3b97096de39399e8.tar.gz |
Added DBus client for errorlogger
-rw-r--r-- | common/errorloggerdbus.cpp | 101 | ||||
-rw-r--r-- | common/errorloggerdbus.h | 37 |
2 files changed, 138 insertions, 0 deletions
diff --git a/common/errorloggerdbus.cpp b/common/errorloggerdbus.cpp new file mode 100644 index 0000000..8b2f697 --- /dev/null +++ b/common/errorloggerdbus.cpp @@ -0,0 +1,101 @@ +/** + * Copyright (C) 2014, Pelagicore + * + * Author: Jonatan Pålsson <jonatan.palsson@pelagicore.com> + * + * This file is part of the GENIVI project Browser Proof-Of-Concept + * For further information, see http://genivi.org/ + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + */ + +#include <QDBusMetaType> +#include <QtQml> +#include <QDBusReply> + +#include "errorloggerdbus.h" + +#include "../common/browserdefs.h" + +ErrorLoggerDbus::ErrorLoggerDbus(QObject *parent) : + QObject(parent), m_instanceId("1") +{ + qDebug() << __PRETTY_FUNCTION__; + + registertypes(); +} + +void ErrorLoggerDbus::registertypes() { + qDBusRegisterMetaType<conn::brw::ErrorItemList>(); + qDBusRegisterMetaType<conn::brw::ErrorItem>(); + qDBusRegisterMetaType<conn::brw::ERROR_SORT_TYPE>(); +} + +void ErrorLoggerDbus::connectdbussession(QString id) { + qDebug() << __PRETTY_FUNCTION__ << id; + + m_instanceId = id; + + QString *dbusservicename = new QString("genivi.poc.browser" + m_instanceId); + + m_errorlogger = new conn::brw::IErrorLogger(*dbusservicename, "/Browser/IErrorLogger", + QDBusConnection::sessionBus(), this); + if(!m_errorlogger->isValid()) { + qDebug() << "failed create object /Browser/IErrorLogger"; + } + + connect(m_errorlogger, SIGNAL(onNewErrorItem(conn::brw::ErrorItem)), + this, SIGNAL(onNewErrorItem(conn::brw::ErrorItem))); + connect(m_errorlogger, SIGNAL(onErrorListChanged(void)), + this, SIGNAL(onErrorListChanged(void))); +} + +uint ErrorLoggerDbus::getItemsCount(qlonglong start, qlonglong end) { + qDebug() << __PRETTY_FUNCTION__; + uint ret = 0; + + if (!m_errorlogger){ + qDebug() << "ErrorLogger not initialized, call connectdbussession first"; + return ret; + } + + QDBusReply<uint> reply = m_errorlogger->getItemsCount(start, end); + + if(reply.isValid()) { + ret = reply.value(); + qDebug() << "ERROR_IDS " << ret; + } else { + QDBusError error = reply.error(); + qDebug() << "ERROR " << error.name() << error.message(); + } + return ret; +} +conn::brw::ErrorItemList ErrorLoggerDbus::getItems(qlonglong timeFrom, + qlonglong timeTo, + conn::brw::ERROR_SORT_TYPE type, + uint startIndex, + uint itemsCount) { + qDebug() << __PRETTY_FUNCTION__; + conn::brw::ErrorItemList list; + + if (!m_errorlogger){ + qDebug() << "ErrorLogger not initialized, call connectdbussession first"; + return list; + } + + QDBusPendingReply<conn::brw::ERROR_IDS, conn::brw::ErrorItemList> reply = + m_errorlogger->getItems(timeFrom, timeTo, type, startIndex, itemsCount); + + if(reply.isValid()) { + conn::brw::ERROR_IDS ret; + ret = reply.value(); + list = reply.argumentAt<1>(); + qDebug() << "ERROR_IDS " << ret; + } else { + QDBusError error = reply.error(); + qDebug() << "ERROR " << error.name() << error.message(); + } + return list; +} diff --git a/common/errorloggerdbus.h b/common/errorloggerdbus.h new file mode 100644 index 0000000..0f80394 --- /dev/null +++ b/common/errorloggerdbus.h @@ -0,0 +1,37 @@ +#ifndef ERRRORLOGGERDBUS_H +#define ERRRORLOGGERDBUS_H + +#include <QObject> +#include "../browser/errorlogger.h" +#include "browserdefs.h" +#include "ierrorlogger_interface.h" + +class ErrorLoggerDbus : public QObject +{ + Q_OBJECT + +public: + explicit ErrorLoggerDbus(QObject *parent = 0); + + Q_INVOKABLE uint getItemsCount(qlonglong, qlonglong); + Q_INVOKABLE conn::brw::ErrorItemList getItems(qlonglong timeFrom, + qlonglong timeTo, + conn::brw::ERROR_SORT_TYPE type, + uint startIndex, + uint itemsCount); + + Q_INVOKABLE void connectdbussession(QString id); + +signals: + void onNewErrorItem(conn::brw::ErrorItem); + void onErrorListChanged(); + +private: + QString m_instanceId; + void registertypes(); + conn::brw::IErrorLogger *m_errorlogger; +}; + + + +#endif /* ERRRORLOGGERDBUS_H */ |