[Telepathy-commits] [telepathy-qt4/master] Connection: invalidate with a vaguely appropriate error when disconnected
Simon McVittie
simon.mcvittie at collabora.co.uk
Wed Jan 14 04:55:03 PST 2009
In a near-future telepathy-spec we should define better errors, but these
will do for now.
---
TelepathyQt4/Client/connection.cpp | 44 ++++++++++++++++++++++++++++++++++-
1 files changed, 42 insertions(+), 2 deletions(-)
diff --git a/TelepathyQt4/Client/connection.cpp b/TelepathyQt4/Client/connection.cpp
index 73f91c6..1f09acd 100644
--- a/TelepathyQt4/Client/connection.cpp
+++ b/TelepathyQt4/Client/connection.cpp
@@ -351,10 +351,50 @@ void Connection::onStatusChanged(uint status, uint reason)
break;
case ConnectionStatusDisconnected:
- if (mPriv->readiness != ReadinessDead)
+ if (mPriv->readiness != ReadinessDead) {
+ const char *errorName;
+
+ // This is the best we can do right now: in an imminent
+ // spec version we should define a different D-Bus error name
+ // for each ConnectionStatusReason
+
+ switch (reason) {
+ case ConnectionStatusReasonNoneSpecified:
+ case ConnectionStatusReasonRequested:
+ errorName = TELEPATHY_ERROR_DISCONNECTED;
+ break;
+
+ case ConnectionStatusReasonNetworkError:
+ case ConnectionStatusReasonAuthenticationFailed:
+ case ConnectionStatusReasonEncryptionError:
+ errorName = TELEPATHY_ERROR_NETWORK_ERROR;
+ break;
+
+ case ConnectionStatusReasonNameInUse:
+ errorName = TELEPATHY_ERROR_NOT_YOURS;
+ break;
+
+ case ConnectionStatusReasonCertNotProvided:
+ case ConnectionStatusReasonCertUntrusted:
+ case ConnectionStatusReasonCertExpired:
+ case ConnectionStatusReasonCertNotActivated:
+ case ConnectionStatusReasonCertHostnameMismatch:
+ case ConnectionStatusReasonCertFingerprintMismatch:
+ case ConnectionStatusReasonCertSelfSigned:
+ case ConnectionStatusReasonCertOtherError:
+ errorName = TELEPATHY_ERROR_NETWORK_ERROR;
+
+ default:
+ errorName = TELEPATHY_ERROR_DISCONNECTED;
+ }
+
+ invalidate(QLatin1String(errorName),
+ QString("ConnectionStatusReason = %1").arg(uint(reason)));
+
mPriv->changeReadiness(ReadinessDead);
- else
+ } else {
warning() << " Got unexpected status change to Disconnected";
+ }
break;
default:
--
1.5.6.5
More information about the Telepathy-commits
mailing list