From 5fb0e878b4eb1b2d9555860e86d720e4904de07e Mon Sep 17 00:00:00 2001 From: Brad Leege Date: Wed, 13 Jul 2016 17:37:30 -0700 Subject: [PATCH] [android] #5680 - Adding 1000 event cap to send telemetry data --- .../telemetry/MapboxEventManager.java | 23 ++++++++++++++++--- 1 file changed, 20 insertions(+), 3 deletions(-) diff --git a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/telemetry/MapboxEventManager.java b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/telemetry/MapboxEventManager.java index 6dc56cc20..d9ce74085 100644 --- a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/telemetry/MapboxEventManager.java +++ b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/telemetry/MapboxEventManager.java @@ -88,6 +88,8 @@ public class MapboxEventManager { private static long flushDelayInMillis = 1000 * 60 * 3; // 3 Minutes private static final int SESSION_ID_ROTATION_HOURS = 24; + private static final int FLUSH_EVENTS_CAP = 1000; + private static MessageDigest messageDigest = null; private static final double locationEventAccuracy = 10000000; @@ -310,6 +312,21 @@ public class MapboxEventManager { new FlushTheEventsTask().execute(); } + /** + * Centralized method for adding populated event to the queue allowing for cap size checking + * @param event Event to add to the Events Queue + */ + private void putEventOnQueue(@NonNull Hashtable event) { + if (event == null) { + return; + } + events.add(event); + if (events.size() == FLUSH_EVENTS_CAP) { + Log.d(TAG, "eventsSize == flushCap so send data."); + flushEventsQueueImmediately(); + } + } + /** * Adds a Location Event to the system for processing * @param location Location event @@ -337,7 +354,7 @@ public class MapboxEventManager { event.put(MapboxEvent.ATTRIBUTE_OPERATING_SYSTEM, operatingSystem); event.put(MapboxEvent.ATTRIBUTE_APPLICATION_STATE, getApplicationState()); - events.add(event); + putEventOnQueue(event); rotateSessionId(); } @@ -376,7 +393,7 @@ public class MapboxEventManager { eventWithAttributes.put(MapboxEvent.ATTRIBUTE_WIFI, getConnectedToWifi()); // Put Map Load on events before Turnstile clears it - events.add(eventWithAttributes); + putEventOnQueue(eventWithAttributes); // Turnstile pushTurnstileEvent(); @@ -403,7 +420,7 @@ public class MapboxEventManager { return; } - events.add(eventWithAttributes); + putEventOnQueue(eventWithAttributes); } /**