void queueTimer_Tick(object sender, object e) { if (requestQueue.IsEmpty || requestQueue.Size < config.EventBatchSize || !ConnectionUtility.IsOnline) { queueTimer.Stop(); } string invokeScriptBatch = string.Empty; for (int i = 0; i < config.EventBatchSize; i++) { string invokeScript = string.Empty; if (requestQueue.TryDequeue(out invokeScript)) { invokeScriptBatch += invokeScript; } } if (!string.IsNullOrWhiteSpace(invokeScriptBatch)) { try { TealiumStatusLog.Information(invokeScriptBatch); #if NETFX_CORE taggerWebView.InvokeScriptAsync("eval", new[] { invokeScriptBatch }); #elif WINDOWS_PHONE taggerWebView.InvokeScript("eval", new[] { invokeScriptBatch }); #endif } catch (Exception ex) { TealiumStatusLog.Error(ex.Message); } } }
async void Current_Resuming(object sender, object e) { TealiumStatusLog.Information("Application.Current.Resuming"); await LoadPersistedQueue(); TealiumStatusLog.Information("Queue loaded from disk"); }
public static async Task <bool> Save <T>(T data, string fileName) { try { using ( var file = await ApplicationData.Current.LocalFolder.OpenStreamForWriteAsync(fileName, CreationCollisionOption.ReplaceExisting)) { if (file != null && file.CanWrite) { DataContractJsonSerializer serializer = new DataContractJsonSerializer(typeof(T)); serializer.WriteObject(file, data); await file.FlushAsync(); return(true); } } } catch (Exception ex) { TealiumStatusLog.Error(ex.Message); } return(false); }
async void Current_Suspending(object sender, Windows.ApplicationModel.SuspendingEventArgs e) { TealiumStatusLog.Information("Application.Current.Suspending"); SuspendingDeferral deferral = e.SuspendingOperation.GetDeferral(); var throwaway = await StorageHelper.Save(requestQueue.ToList(), "_tealium_queue"); TealiumStatusLog.Information("Queue saved to disk"); deferral.Complete(); //needed to ensure the suspend process waits for this to finish }
public static async Task <T> Load <T>(string fileName) { try { using (var file = await ApplicationData.Current.LocalFolder.OpenStreamForReadAsync(fileName)) { if (file != null && file.CanRead) { DataContractJsonSerializer serializer = new DataContractJsonSerializer(typeof(T)); var contents = serializer.ReadObject(file); return((T)contents); } } } catch (Exception ex) { TealiumStatusLog.Error(ex.Message); } return(default(T)); }