summaryrefslogtreecommitdiffstats
path: root/mobile/android/services/src/main/java/org/mozilla/gecko/sync/HTTPFailureException.java
diff options
context:
space:
mode:
Diffstat (limited to 'mobile/android/services/src/main/java/org/mozilla/gecko/sync/HTTPFailureException.java')
-rw-r--r--mobile/android/services/src/main/java/org/mozilla/gecko/sync/HTTPFailureException.java47
1 files changed, 47 insertions, 0 deletions
diff --git a/mobile/android/services/src/main/java/org/mozilla/gecko/sync/HTTPFailureException.java b/mobile/android/services/src/main/java/org/mozilla/gecko/sync/HTTPFailureException.java
new file mode 100644
index 000000000..69bba8841
--- /dev/null
+++ b/mobile/android/services/src/main/java/org/mozilla/gecko/sync/HTTPFailureException.java
@@ -0,0 +1,47 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+package org.mozilla.gecko.sync;
+
+import org.mozilla.gecko.sync.net.SyncStorageResponse;
+
+import android.content.SyncResult;
+
+public class HTTPFailureException extends SyncException {
+ private static final long serialVersionUID = -5415864029780770619L;
+ public SyncStorageResponse response;
+
+ public HTTPFailureException(SyncStorageResponse response) {
+ this.response = response;
+ }
+
+ @Override
+ public String toString() {
+ String errorMessage;
+ try {
+ errorMessage = this.response.getErrorMessage();
+ } catch (Exception e) {
+ // Oh well.
+ errorMessage = "[unknown error message]";
+ }
+ return "<HTTPFailureException " + this.response.getStatusCode() +
+ " :: (" + errorMessage + ")>";
+ }
+
+ @Override
+ public void updateStats(GlobalSession globalSession, SyncResult syncResult) {
+ switch (response.getStatusCode()) {
+ case 401:
+ // Node reassignment 401s get handled internally.
+ syncResult.stats.numAuthExceptions++;
+ return;
+ case 500:
+ case 501:
+ case 503:
+ // TODO: backoff.
+ syncResult.stats.numIoExceptions++;
+ return;
+ }
+ }
+}