[telepathy-qt4/master] ClientRegister: Change registerClient to receive the clientName and remove it from constructor.

Andre Moreira Magalhaes (andrunko) andre.magalhaes at collabora.co.uk
Mon May 11 12:06:50 PDT 2009


Allow the same registrar (unique per dbus connection) to register clients with
different names.
---
 TelepathyQt4/client-registrar.cpp |   32 +++++++++++---------------------
 TelepathyQt4/client-registrar.h   |   11 +++++------
 tests/dbus/client-handler.cpp     |   12 ++++++------
 3 files changed, 22 insertions(+), 33 deletions(-)

diff --git a/TelepathyQt4/client-registrar.cpp b/TelepathyQt4/client-registrar.cpp
index 9b93852..93491b8 100644
--- a/TelepathyQt4/client-registrar.cpp
+++ b/TelepathyQt4/client-registrar.cpp
@@ -366,16 +366,12 @@ void ClientHandlerRequestsAdaptor::AddRequestCall::onChannelRequestReady(
 
 struct ClientRegistrar::Private
 {
-    Private(const QDBusConnection &bus, const QString &clientName)
-        : bus(bus), clientName(clientName)
+    Private(const QDBusConnection &bus)
+        : bus(bus)
     {
-        busName = QLatin1String("org.freedesktop.Telepathy.Client.");
-        busName.append(clientName);
     }
 
     QDBusConnection bus;
-    QString busName;
-    QString clientName;
     QHash<AbstractClientPtr, QString> clients;
     QHash<AbstractClientPtr, QObject*> clientObjects;
     QSet<QString> services;
@@ -383,25 +379,23 @@ struct ClientRegistrar::Private
 
 QHash<QString, ClientRegistrar*> ClientRegistrar::registrarForConnection;
 
-ClientRegistrarPtr ClientRegistrar::create(const QString &clientName)
+ClientRegistrarPtr ClientRegistrar::create()
 {
     QDBusConnection bus = QDBusConnection::sessionBus();
-    return create(bus, clientName);
+    return create(bus);
 }
 
-ClientRegistrarPtr ClientRegistrar::create(const QDBusConnection &bus,
-        const QString &clientName)
+ClientRegistrarPtr ClientRegistrar::create(const QDBusConnection &bus)
 {
     if (registrarForConnection.contains(bus.baseService())) {
         return ClientRegistrarPtr(
                 registrarForConnection.value(bus.baseService()));
     }
-    return ClientRegistrarPtr(new ClientRegistrar(bus, clientName));
+    return ClientRegistrarPtr(new ClientRegistrar(bus));
 }
 
-ClientRegistrar::ClientRegistrar(const QDBusConnection &bus,
-        const QString &clientName)
-    : mPriv(new Private(bus, clientName))
+ClientRegistrar::ClientRegistrar(const QDBusConnection &bus)
+    : mPriv(new Private(bus))
 {
     registrarForConnection.insert(bus.baseService(), this);
 }
@@ -418,18 +412,13 @@ QDBusConnection ClientRegistrar::dbusConnection() const
     return mPriv->bus;
 }
 
-QString ClientRegistrar::clientName() const
-{
-    return mPriv->clientName;
-}
-
 QList<AbstractClientPtr> ClientRegistrar::registeredClients() const
 {
     return mPriv->clients.keys();
 }
 
 bool ClientRegistrar::registerClient(const AbstractClientPtr &client,
-        bool unique)
+        const QString &clientName, bool unique)
 {
     if (!client) {
         warning() << "Unable to register a null client";
@@ -441,7 +430,8 @@ bool ClientRegistrar::registerClient(const AbstractClientPtr &client,
         return true;
     }
 
-    QString busName(mPriv->busName);
+    QString busName = QLatin1String("org.freedesktop.Telepathy.Client.");
+    busName.append(clientName);
     if (unique) {
         // o.f.T.Client.<unique_bus_name>_<pointer> should be enough to identify
         // an unique identifier
diff --git a/TelepathyQt4/client-registrar.h b/TelepathyQt4/client-registrar.h
index 1f77b15..cb1ef62 100644
--- a/TelepathyQt4/client-registrar.h
+++ b/TelepathyQt4/client-registrar.h
@@ -42,21 +42,20 @@ class ClientRegistrar : public QObject, public RefCounted
     Q_DISABLE_COPY(ClientRegistrar)
 
 public:
-    static ClientRegistrarPtr create(const QString &clientName);
-    static ClientRegistrarPtr create(const QDBusConnection &bus,
-            const QString &clientName);
+    static ClientRegistrarPtr create();
+    static ClientRegistrarPtr create(const QDBusConnection &bus);
     virtual ~ClientRegistrar();
 
     QDBusConnection dbusConnection() const;
-    QString clientName() const;
 
     QList<AbstractClientPtr> registeredClients() const;
-    bool registerClient(const AbstractClientPtr &client, bool unique = false);
+    bool registerClient(const AbstractClientPtr &client,
+            const QString &clientName, bool unique = false);
     bool unregisterClient(const AbstractClientPtr &client);
     void unregisterClients();
 
 private:
-    ClientRegistrar(const QDBusConnection &bus, const QString &clientName);
+    ClientRegistrar(const QDBusConnection &bus);
 
     struct Private;
     friend struct Private;
diff --git a/tests/dbus/client-handler.cpp b/tests/dbus/client-handler.cpp
index e00f631..4783e61 100644
--- a/tests/dbus/client-handler.cpp
+++ b/tests/dbus/client-handler.cpp
@@ -369,7 +369,7 @@ void TestClientHandler::initTestCase()
 
     tp_handle_unref(mContactRepo, handle);
 
-    mClientRegistrar = ClientRegistrar::create("foo");
+    mClientRegistrar = ClientRegistrar::create();
 
     QDBusConnection bus = mClientRegistrar->dbusConnection();
     mChannelRequestBusName = "org.freedesktop.Telepathy.ChannelDispatcher";
@@ -394,7 +394,7 @@ void TestClientHandler::init()
 void TestClientHandler::testRegister()
 {
     // invalid client
-    QVERIFY(!mClientRegistrar->registerClient(AbstractClientPtr()));
+    QVERIFY(!mClientRegistrar->registerClient(AbstractClientPtr(), "foo"));
 
     ChannelClassList filters;
     QMap<QString, QDBusVariant> filter;
@@ -404,11 +404,11 @@ void TestClientHandler::testRegister()
                   QDBusVariant(Tp::HandleTypeContact));
     filters.append(filter);
     mClientObject1 = MyHandler::create(filters, false, true);
-    QVERIFY(mClientRegistrar->registerClient(mClientObject1));
+    QVERIFY(mClientRegistrar->registerClient(mClientObject1, "foo"));
     QVERIFY(mClientRegistrar->registeredClients().contains(mClientObject1));
 
     // no op - client already registered
-    QVERIFY(mClientRegistrar->registerClient(mClientObject1));
+    QVERIFY(mClientRegistrar->registerClient(mClientObject1, "foo"));
 
     filters.clear();
     filter.clear();
@@ -418,11 +418,11 @@ void TestClientHandler::testRegister()
                   QDBusVariant(Tp::HandleTypeContact));
     filters.append(filter);
     mClientObject2 = MyHandler::create(filters, true, true);
-    QVERIFY(mClientRegistrar->registerClient(mClientObject2, true));
+    QVERIFY(mClientRegistrar->registerClient(mClientObject2, "foo", true));
     QVERIFY(mClientRegistrar->registeredClients().contains(mClientObject2));
 
     // no op - client already registered
-    QVERIFY(mClientRegistrar->registerClient(mClientObject2, true));
+    QVERIFY(mClientRegistrar->registerClient(mClientObject2, "foo", true));
 
     QDBusConnection bus = mClientRegistrar->dbusConnection();
     QDBusConnectionInterface *busIface = bus.interface();
-- 
1.5.6.5




More information about the telepathy-commits mailing list