[Telepathy-commits] [telepathy-qt4/master] PendingHandles: Split request/hold handles slots.
Andre Moreira Magalhaes (andrunko)
andre.magalhaes at collabora.co.uk
Tue Mar 24 11:31:06 PDT 2009
---
TelepathyQt4/Client/pending-handles.cpp | 126 +++++++++++++++---------------
TelepathyQt4/Client/pending-handles.h | 3 +-
2 files changed, 65 insertions(+), 64 deletions(-)
diff --git a/TelepathyQt4/Client/pending-handles.cpp b/TelepathyQt4/Client/pending-handles.cpp
index 4bc1a46..c2b2f0b 100644
--- a/TelepathyQt4/Client/pending-handles.cpp
+++ b/TelepathyQt4/Client/pending-handles.cpp
@@ -94,7 +94,7 @@ PendingHandles::PendingHandles(Connection *connection, uint handleType,
this);
connect(watcher,
SIGNAL(finished(QDBusPendingCallWatcher *)),
- SLOT(onFastPathFinished(QDBusPendingCallWatcher *)));
+ SLOT(onRequestHandlesFinished(QDBusPendingCallWatcher *)));
}
PendingHandles::PendingHandles(Connection *connection, uint handleType,
@@ -125,7 +125,7 @@ PendingHandles::PendingHandles(Connection *connection, uint handleType,
this);
connect(watcher,
SIGNAL(finished(QDBusPendingCallWatcher *)),
- SLOT(onFastPathFinished(QDBusPendingCallWatcher *)));
+ SLOT(onHoldHandlesFinished(QDBusPendingCallWatcher *)));
}
}
@@ -255,79 +255,79 @@ ReferencedHandles PendingHandles::handles() const
return mPriv->handles;
}
-void PendingHandles::onFastPathFinished(QDBusPendingCallWatcher *watcher)
+void PendingHandles::onRequestHandlesFinished(QDBusPendingCallWatcher *watcher)
{
- // Thanks QDBus for this the need for this error-handling code duplication
- if (mPriv->isRequest) {
- QDBusPendingReply<UIntList> reply = *watcher;
-
- if (reply.isError()) {
- QDBusError error = reply.error();
- if (error.name() != TELEPATHY_ERROR_INVALID_HANDLE &&
- error.name() != TELEPATHY_ERROR_INVALID_ARGUMENT &&
- error.name() != TELEPATHY_ERROR_NOT_AVAILABLE) {
- // do not fallback
- foreach (const QString &name, mPriv->namesRequested) {
- mPriv->invalidNames.insert(name,
- QPair<QString, QString>(error.name(),
- error.message()));
- }
- setFinishedWithError(error);
- connection()->handleRequestLanded(mPriv->handleType);
- watcher->deleteLater();
- return;
- }
-
- if (mPriv->namesRequested.size() == 1) {
- debug().nospace() << " Failure: error " <<
- reply.error().name() << ": " <<
- reply.error().message();
+ QDBusPendingReply<UIntList> reply = *watcher;
- mPriv->invalidNames.insert(mPriv->namesRequested.first(),
+ if (reply.isError()) {
+ QDBusError error = reply.error();
+ if (error.name() != TELEPATHY_ERROR_INVALID_HANDLE &&
+ error.name() != TELEPATHY_ERROR_INVALID_ARGUMENT &&
+ error.name() != TELEPATHY_ERROR_NOT_AVAILABLE) {
+ // do not fallback
+ foreach (const QString &name, mPriv->namesRequested) {
+ mPriv->invalidNames.insert(name,
QPair<QString, QString>(error.name(),
error.message()));
- setFinished();
- connection()->handleRequestLanded(mPriv->handleType);
- watcher->deleteLater();
- return;
}
-
- // try to request one handles at a time
- foreach (const QString &name, mPriv->namesRequested) {
- QDBusPendingCallWatcher *watcher =
- new QDBusPendingCallWatcher(
- mPriv->connection->baseInterface()->RequestHandles(
- mPriv->handleType,
- QStringList() << name),
- this);
- connect(watcher,
- SIGNAL(finished(QDBusPendingCallWatcher *)),
- SLOT(onRequestHandlesFallbackFinished(QDBusPendingCallWatcher *)));
- mPriv->idsForWatchers.insert(watcher, name);
- }
- } else {
- debug() << "Received reply to RequestHandles";
- mPriv->handles = ReferencedHandles(mPriv->connection,
- mPriv->handleType, reply.value());
- mPriv->validNames.append(mPriv->namesRequested);
- setFinished();
- mPriv->connection->handleRequestLanded(mPriv->handleType);
+ setFinishedWithError(error);
+ connection()->handleRequestLanded(mPriv->handleType);
+ watcher->deleteLater();
+ return;
}
- } else {
- QDBusPendingReply<void> reply = *watcher;
- debug() << "Received reply to HoldHandles";
-
- if (reply.isError()) {
+ if (mPriv->namesRequested.size() == 1) {
debug().nospace() << " Failure: error " <<
reply.error().name() << ": " <<
reply.error().message();
- setFinishedWithError(reply.error());
- } else {
- mPriv->handles = ReferencedHandles(mPriv->connection,
- mPriv->handleType, mPriv->handlesToReference);
+
+ mPriv->invalidNames.insert(mPriv->namesRequested.first(),
+ QPair<QString, QString>(error.name(),
+ error.message()));
setFinished();
+ connection()->handleRequestLanded(mPriv->handleType);
+ watcher->deleteLater();
+ return;
+ }
+
+ // try to request one handles at a time
+ foreach (const QString &name, mPriv->namesRequested) {
+ QDBusPendingCallWatcher *watcher =
+ new QDBusPendingCallWatcher(
+ mPriv->connection->baseInterface()->RequestHandles(
+ mPriv->handleType,
+ QStringList() << name),
+ this);
+ connect(watcher,
+ SIGNAL(finished(QDBusPendingCallWatcher *)),
+ SLOT(onRequestHandlesFallbackFinished(QDBusPendingCallWatcher *)));
+ mPriv->idsForWatchers.insert(watcher, name);
}
+ } else {
+ debug() << "Received reply to RequestHandles";
+ mPriv->handles = ReferencedHandles(mPriv->connection,
+ mPriv->handleType, reply.value());
+ mPriv->validNames.append(mPriv->namesRequested);
+ setFinished();
+ mPriv->connection->handleRequestLanded(mPriv->handleType);
+ }
+}
+
+void PendingHandles::onHoldHandlesFinished(QDBusPendingCallWatcher *watcher)
+{
+ QDBusPendingReply<void> reply = *watcher;
+
+ debug() << "Received reply to HoldHandles";
+
+ if (reply.isError()) {
+ debug().nospace() << " Failure: error " <<
+ reply.error().name() << ": " <<
+ reply.error().message();
+ setFinishedWithError(reply.error());
+ } else {
+ mPriv->handles = ReferencedHandles(mPriv->connection,
+ mPriv->handleType, mPriv->handlesToReference);
+ setFinished();
}
watcher->deleteLater();
diff --git a/TelepathyQt4/Client/pending-handles.h b/TelepathyQt4/Client/pending-handles.h
index 7aa0a56..e91d21f 100644
--- a/TelepathyQt4/Client/pending-handles.h
+++ b/TelepathyQt4/Client/pending-handles.h
@@ -71,7 +71,8 @@ public:
ReferencedHandles handles() const;
private Q_SLOTS:
- void onFastPathFinished(QDBusPendingCallWatcher *watcher);
+ void onRequestHandlesFinished(QDBusPendingCallWatcher *watcher);
+ void onHoldHandlesFinished(QDBusPendingCallWatcher *watcher);
void onRequestHandlesFallbackFinished(QDBusPendingCallWatcher *watcher);
private:
--
1.5.6.5
More information about the telepathy-commits
mailing list