[Telepathy-commits] [telepathy-qt4/master] DBusProxy: promote invalidated, invalidationReason etc. to superclass
Simon McVittie
simon.mcvittie at collabora.co.uk
Wed Jan 21 08:03:21 PST 2009
Even StatelessDBusProxy subclasses can have a use for invalidation -
for instance, Account proxies should become invalid when the account
is deleted, even though the Account API is otherwise stateless.
---
TelepathyQt4/Client/dbus-proxy.cpp | 33 +++++++++------------------------
TelepathyQt4/Client/dbus-proxy.h | 29 ++++++++++++++---------------
tests/dbus/stateful-proxy.cpp | 20 ++++++++++----------
3 files changed, 33 insertions(+), 49 deletions(-)
diff --git a/TelepathyQt4/Client/dbus-proxy.cpp b/TelepathyQt4/Client/dbus-proxy.cpp
index f9e00d2..4028b26 100644
--- a/TelepathyQt4/Client/dbus-proxy.cpp
+++ b/TelepathyQt4/Client/dbus-proxy.cpp
@@ -64,6 +64,8 @@ public:
QDBusConnection dbusConnection;
QString busName;
QString objectPath;
+ QString invalidationReason;
+ QString invalidationMessage;
Private(const QDBusConnection &, const QString &, const QString &);
};
@@ -186,26 +188,10 @@ StatelessDBusProxy::~StatelessDBusProxy()
* Examples in Telepathy include the Connection and Channel.
*/
-class StatefulDBusProxy::Private
-{
-public:
- QString invalidationReason;
- QString invalidationMessage;
-
- Private();
-};
-
-StatefulDBusProxy::Private::Private()
- : invalidationReason(QString()),
- invalidationMessage(QString())
-{
- debug() << "Creating new StatefulDBusProxy";
-}
-
StatefulDBusProxy::StatefulDBusProxy(const QDBusConnection &dbusConnection,
const QString &busName, const QString &objectPath, QObject *parent)
: DBusProxy(dbusConnection, busName, objectPath, parent),
- mPriv(new Private)
+ mPriv(0)
{
QString uniqueName = busName;
@@ -229,7 +215,6 @@ StatefulDBusProxy::StatefulDBusProxy(const QDBusConnection &dbusConnection,
StatefulDBusProxy::~StatefulDBusProxy()
{
- delete mPriv;
}
/**
@@ -238,7 +223,7 @@ StatefulDBusProxy::~StatefulDBusProxy()
*
* \return <code>true</code> if this object is still fully usable
*/
-bool StatefulDBusProxy::isValid() const
+bool DBusProxy::isValid() const
{
return mPriv->invalidationReason.isEmpty();
}
@@ -250,7 +235,7 @@ bool StatefulDBusProxy::isValid() const
*
* \return A D-Bus error name, or QString() if this object is still valid
*/
-QString StatefulDBusProxy::invalidationReason() const
+QString DBusProxy::invalidationReason() const
{
return mPriv->invalidationReason;
}
@@ -262,7 +247,7 @@ QString StatefulDBusProxy::invalidationReason() const
*
* \return A debugging message, or QString() if this object is still valid
*/
-QString StatefulDBusProxy::invalidationMessage() const
+QString DBusProxy::invalidationMessage() const
{
return mPriv->invalidationMessage;
}
@@ -283,12 +268,12 @@ QString StatefulDBusProxy::invalidationMessage() const
*/
/**
- * Called by subclasses when the StatefulDBusProxy should become invalid.
+ * Called by subclasses when the DBusProxy should become invalid.
*
* This method takes care of setting the invalidationReason,
* invalidationMessage, and emitting the invalidated signal.
*/
-void StatefulDBusProxy::invalidate(const QString &reason, const QString &message)
+void DBusProxy::invalidate(const QString &reason, const QString &message)
{
if (!isValid()) {
debug().nospace() << "Already invalidated by "
@@ -313,7 +298,7 @@ void StatefulDBusProxy::invalidate(const QString &reason, const QString &message
QTimer::singleShot(0, this, SLOT(emitInvalidated()));
}
-void StatefulDBusProxy::emitInvalidated()
+void DBusProxy::emitInvalidated()
{
Q_ASSERT(!isValid());
diff --git a/TelepathyQt4/Client/dbus-proxy.h b/TelepathyQt4/Client/dbus-proxy.h
index 9cdb198..7626341 100644
--- a/TelepathyQt4/Client/dbus-proxy.h
+++ b/TelepathyQt4/Client/dbus-proxy.h
@@ -48,8 +48,21 @@ public:
QString busName() const;
QString objectPath() const;
+ bool isValid() const;
+ QString invalidationReason() const;
+ QString invalidationMessage() const;
+
protected:
void setBusName(const QString &busName);
+ void invalidate(const QString &reason, const QString &message);
+ inline void invalidate(const QDBusError &error);
+
+Q_SIGNALS:
+ void invalidated(Telepathy::Client::DBusProxy *proxy,
+ QString errorName, QString errorMessage);
+
+private Q_SLOTS:
+ void emitInvalidated();
private:
class Private;
@@ -85,21 +98,7 @@ public:
virtual ~StatefulDBusProxy();
- bool isValid() const;
- QString invalidationReason() const;
- QString invalidationMessage() const;
-
-protected:
- void invalidate(const QString &reason, const QString &message);
-
- inline void invalidate(const QDBusError &error);
-
-Q_SIGNALS:
- void invalidated(Telepathy::Client::StatefulDBusProxy *proxy,
- QString errorName, QString errorMessage);
-
private Q_SLOTS:
- void emitInvalidated();
void onServiceOwnerChanged(const QString &name, const QString &oldOwner,
const QString &newOwner);
@@ -109,7 +108,7 @@ private:
Private *mPriv;
};
-void StatefulDBusProxy::invalidate(const QDBusError &error)
+void DBusProxy::invalidate(const QDBusError &error)
{
invalidate(error.name(), error.message());
}
diff --git a/tests/dbus/stateful-proxy.cpp b/tests/dbus/stateful-proxy.cpp
index 22f4604..b9ccfc7 100644
--- a/tests/dbus/stateful-proxy.cpp
+++ b/tests/dbus/stateful-proxy.cpp
@@ -64,7 +64,7 @@ private Q_SLOTS:
protected Q_SLOTS:
// these would be public, but then QtTest would think they were tests
- void expectInvalidated(Telepathy::Client::StatefulDBusProxy *,
+ void expectInvalidated(Telepathy::Client::DBusProxy *,
QString, QString);
private:
@@ -138,10 +138,10 @@ void TestStatefulProxy::testBasics()
QVERIFY(connect(mProxy, SIGNAL(invalidated(
- Telepathy::Client::StatefulDBusProxy *,
+ Telepathy::Client::DBusProxy *,
QString, QString)),
this, SLOT(expectInvalidated(
- Telepathy::Client::StatefulDBusProxy *,
+ Telepathy::Client::DBusProxy *,
QString, QString))));
mProxy->invalidate("com.example.DomainSpecificError",
"Because I said so");
@@ -155,10 +155,10 @@ void TestStatefulProxy::testBasics()
// the signal doesn't arrive instantly
QCOMPARE(mLoop->exec(), 0);
QVERIFY(disconnect(mProxy, SIGNAL(invalidated(
- Telepathy::Client::StatefulDBusProxy *,
+ Telepathy::Client::DBusProxy *,
QString, QString)),
this, SLOT(expectInvalidated(
- Telepathy::Client::StatefulDBusProxy *,
+ Telepathy::Client::DBusProxy *,
QString, QString))));
QCOMPARE(mInvalidated, 1);
@@ -173,7 +173,7 @@ void TestStatefulProxy::testBasics()
QString::fromAscii("Because I said so"));
}
-void TestStatefulProxy::expectInvalidated(StatefulDBusProxy *proxy,
+void TestStatefulProxy::expectInvalidated(DBusProxy *proxy,
QString reason, QString message)
{
mInvalidated++;
@@ -196,18 +196,18 @@ void TestStatefulProxy::testNameOwnerChanged()
QCOMPARE(mProxy->invalidationMessage(), QString());
QVERIFY(connect(mProxy, SIGNAL(invalidated(
- Telepathy::Client::StatefulDBusProxy *,
+ Telepathy::Client::DBusProxy *,
QString, QString)),
this, SLOT(expectInvalidated(
- Telepathy::Client::StatefulDBusProxy *,
+ Telepathy::Client::DBusProxy *,
QString, QString))));
QDBusConnection::disconnectFromBus("another unique name");
QCOMPARE(mLoop->exec(), 0);
QVERIFY(disconnect(mProxy, SIGNAL(invalidated(
- Telepathy::Client::StatefulDBusProxy *,
+ Telepathy::Client::DBusProxy *,
QString, QString)),
this, SLOT(expectInvalidated(
- Telepathy::Client::StatefulDBusProxy *,
+ Telepathy::Client::DBusProxy *,
QString, QString))));
QCOMPARE(mInvalidated, 1);
--
1.5.6.5
More information about the Telepathy-commits
mailing list