Skip to content

Commit

Permalink
add session API
Browse files Browse the repository at this point in the history
  • Loading branch information
Lorn Potter committed Dec 28, 2012
1 parent 8127255 commit b43af37
Show file tree
Hide file tree
Showing 10 changed files with 513 additions and 4 deletions.
10 changes: 8 additions & 2 deletions libconnman-qt/libconnman-qt.pro
Expand Up @@ -16,6 +16,7 @@ isEmpty(PREFIX) {
#system(qdbusxml2cpp -c Manager -p manager -N connman-manager.xml)
system(qdbusxml2cpp -c Service -p service -N connman-service.xml)
system(qdbusxml2cpp -c Technology -p technology -N connman-technology.xml)
#system(qdbusxml2cpp -c Session -p session -N connman-session.xml)

HEADERS += manager.h \
service.h \
Expand All @@ -28,7 +29,9 @@ HEADERS += manager.h \
clockmodel.h \
debug.h \
useragent.h \
counter.h
session.h \
sessionagent.h \
networksession.h

SOURCES += \
networkmanager.cpp \
Expand All @@ -42,7 +45,10 @@ SOURCES += \
commondbustypes.cpp \
debug.cpp \
useragent.cpp \
counter.cpp
session.cpp \
sessionagent.cpp \
networksession.cpp


target.path = $$INSTALL_ROOT$$PREFIX/lib

Expand Down
32 changes: 31 additions & 1 deletion libconnman-qt/networkmanager.cpp
Expand Up @@ -27,6 +27,7 @@ NetworkManager* NetworkManagerFactory::createInstance()

const QString NetworkManager::State("State");
const QString NetworkManager::OfflineMode("OfflineMode");
const QString NetworkManager::SessionMode("SessionMode");

NetworkManager::NetworkManager(QObject* parent)
: QObject(parent),
Expand Down Expand Up @@ -319,7 +320,9 @@ void NetworkManager::propertyChanged(const QString &name,
emit stateChanged(tmp.toString());
} else if (name == OfflineMode) {
emit offlineModeChanged(tmp.toBool());
}
} else if (name == SessionMode) {
emit sessionModeChanged(tmp.toBool());
}
}

void NetworkManager::technologyAdded(const QDBusObjectPath &technology,
Expand Down Expand Up @@ -453,3 +456,30 @@ void NetworkManager::unregisterCounter(const QString &path)
if(m_manager)
m_manager->UnregisterCounter(QDBusObjectPath(path));
}

QDBusObjectPath NetworkManager::createSession(const QVariantMap &settings, const QString &sessionNotifierPath)
{
qDebug() << Q_FUNC_INFO << sessionNotifierPath << m_manager;

QDBusPendingReply<QDBusObjectPath> reply;
if(m_manager)
reply = m_manager->CreateSession(settings,QDBusObjectPath(sessionNotifierPath));
return reply;
}

void NetworkManager::destroySession(const QString &sessionAgentPath)
{
if(m_manager)
m_manager->DestroySession(QDBusObjectPath(sessionAgentPath));
}

void NetworkManager::setSessionMode(const bool &sessionMode)
{
if(m_manager)
m_manager->SetProperty(SessionMode, QDBusVariant(QVariant(sessionMode)));
}

bool NetworkManager::sessionMode() const
{
return m_propertiesCache[SessionMode].toBool();
}
10 changes: 10 additions & 0 deletions libconnman-qt/networkmanager.h
Expand Up @@ -37,6 +37,8 @@ class NetworkManager : public QObject
Q_PROPERTY(bool offlineMode READ offlineMode WRITE setOfflineMode NOTIFY offlineModeChanged);
Q_PROPERTY(NetworkService* defaultRoute READ defaultRoute NOTIFY defaultRouteChanged);

Q_PROPERTY(bool sessionMode READ sessionMode WRITE setSessionMode NOTIFY sessionModeChanged);

public:
NetworkManager(QObject* parent=0);
virtual ~NetworkManager();
Expand All @@ -51,12 +53,18 @@ class NetworkManager : public QObject
bool offlineMode() const;
NetworkService* defaultRoute() const;

bool sessionMode() const;

public slots:
void setOfflineMode(const bool &offlineMode);
void registerAgent(const QString &path);
void unregisterAgent(const QString &path);
void registerCounter(const QString &path, quint32 accuracy,quint32 period);
void unregisterCounter(const QString &path);
QDBusObjectPath createSession(const QVariantMap &settings, const QString &sessionNotifierPath);
void destroySession(const QString &sessionAgentPath);

void setSessionMode(const bool &sessionMode);

signals:
void availabilityChanged(bool available);
Expand All @@ -66,6 +74,7 @@ public slots:
void technologiesChanged();
void servicesChanged();
void defaultRouteChanged(NetworkService* defaultRoute);
void sessionModeChanged(bool);

private:
Manager *m_manager;
Expand All @@ -91,6 +100,7 @@ public slots:

static const QString State;
static const QString OfflineMode;
static const QString SessionMode;

bool m_available;

Expand Down
118 changes: 118 additions & 0 deletions libconnman-qt/networksession.cpp
@@ -0,0 +1,118 @@
/*
* Copyright © 2012, Jolla Ltd
*
* This program is licensed under the terms and conditions of the
* Apache License, version 2.0. The full text of the Apache License is at
* http://www.apache.org/licenses/LICENSE-2.0
*
*/

#include "networksession.h"
#include "sessionagent.h"

NetworkSession::NetworkSession(QObject *parent) :
QObject(parent),
m_sessionAgent(0),
m_path("/ConnmanQmlSessionAgent")
{
}

NetworkSession::~NetworkSession()
{
}

void NetworkSession::registerSession()
{
if (m_path.isEmpty())
return;
m_sessionAgent = new SessionAgent(m_path ,this);
connect(m_sessionAgent,SIGNAL(settingsUpdated(QVariantMap)),
this,SLOT(sessionSettingsUpdated(QVariantMap)));

m_sessionAgent->registerSession();
}

QString NetworkSession::state() const
{
return settingsMap.value("State").toString();
}

QString NetworkSession::name() const
{
return settingsMap.value("Name").toString();
}

QString NetworkSession::bearer() const
{
return settingsMap.value("Bearer").toString();
}

QString NetworkSession::sessionInterface() const
{
return settingsMap.value("Interface").toString();
}

QVariantMap NetworkSession::ipv4() const
{
return settingsMap.value("IPv4").toMap();
}

QVariantMap NetworkSession::ipv6() const
{
return settingsMap.value("IPv6").toMap();
}

QStringList NetworkSession::allowedBearers() const
{
return settingsMap.value("AllowedBearers").toStringList();
}

QString NetworkSession::connectionType() const
{
return settingsMap.value("ConnectionType").toString();
}

void NetworkSession::setAllowedBearers(const QStringList &bearers)
{
settingsMap.insert("AllowedBearers", qVariantFromValue(bearers));
m_sessionAgent->setAllowedBearers(bearers);
}

void NetworkSession::setConnectionType(const QString &type)
{
settingsMap.insert("ConnectionType", qVariantFromValue(type));
m_sessionAgent->setConnectionType(type);
}

void NetworkSession::requestDestroy()
{
m_sessionAgent->requestDestroy();
}

void NetworkSession::requestConnect()
{
m_sessionAgent->requestConnect();
}

void NetworkSession::requestDisconnect()
{
m_sessionAgent->requestDisconnect();
}

void NetworkSession::sessionSettingsUpdated(const QVariantMap &settings)
{
Q_FOREACH(const QString &name, settings.keys()) {
settingsMap.insert(name,settings[name]);
}
Q_EMIT settingsChanged(settings);
}

QString NetworkSession::path() const
{
return m_path;
}

void NetworkSession::setPath(const QString &path)
{
m_path = path;
}
73 changes: 73 additions & 0 deletions libconnman-qt/networksession.h
@@ -0,0 +1,73 @@
/*
* Copyright © 2012, Jolla Ltd
*
* This program is licensed under the terms and conditions of the
* Apache License, version 2.0. The full text of the Apache License is at
* http://www.apache.org/licenses/LICENSE-2.0
*
*/


#ifndef SESSIONSERVICE_H
#define SESSIONSERVICE_H

#include <QObject>
#include <QtDBus>

class SessionAgent;

class NetworkSession : public QObject
{
Q_OBJECT
Q_PROPERTY(QString state READ state)
Q_PROPERTY(QString name READ name)
Q_PROPERTY(QString bearer READ bearer)
Q_PROPERTY(QString sessionInterface READ sessionInterface)
Q_PROPERTY(QVariantMap ipv4 READ ipv4)
Q_PROPERTY(QVariantMap ipv6 READ ipv6)

Q_PROPERTY(QString path READ path WRITE setPath)

Q_PROPERTY(QStringList allowedBearers READ allowedBearers WRITE setAllowedBearers NOTIFY allowedBearersChanged)
Q_PROPERTY(QString connectionType READ connectionType WRITE setConnectionType NOTIFY connectionTypeChanged)

public:
NetworkSession(QObject *parent = 0);
virtual ~NetworkSession();

//Settings
QString state() const;
QString name() const;
QString bearer() const;
QString sessionInterface() const;
QVariantMap ipv4() const;
QVariantMap ipv6() const;
QStringList allowedBearers() const;
QString connectionType() const;

QString path() const;

void setAllowedBearers(const QStringList &bearers);
void setConnectionType(const QString &type);

signals:

void allowedBearersChanged(const QStringList &bearers);
void connectionTypeChanged(const QString &type);
void settingsChanged(const QVariantMap &settings);

public slots:
void requestDestroy();
void requestConnect();
void requestDisconnect();
void sessionSettingsUpdated(const QVariantMap &settings);
void setPath(const QString &path);
void registerSession();

private:
SessionAgent *m_sessionAgent;
QVariantMap settingsMap;
QString m_path;
};

#endif // SESSIONSERVICE_H
25 changes: 25 additions & 0 deletions libconnman-qt/session.cpp
@@ -0,0 +1,25 @@
/*
* Copyright © 2012, Jolla.
*
* This program is licensed under the terms and conditions of the
* Apache License, version 2.0. The full text of the Apache License is at
* http://www.apache.org/licenses/LICENSE-2.0
*
*/

#include "session.h"

/*
* Implementation of interface class Session
*/

Session::Session(const QString &path, QObject *parent)
: QDBusAbstractInterface(staticConnmanService(), path, staticInterfaceName(), QDBusConnection::systemBus(), parent)
{
qDebug() << Q_FUNC_INFO;
}

Session::~Session()
{
}

0 comments on commit b43af37

Please sign in to comment.