Esempio n. 1
0
        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);
                }
            }
        }
Esempio n. 2
0
        async void Current_Resuming(object sender, object e)
        {
            TealiumStatusLog.Information("Application.Current.Resuming");
            await LoadPersistedQueue();

            TealiumStatusLog.Information("Queue loaded from disk");
        }
Esempio n. 3
0
        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);
        }
Esempio n. 4
0
        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
        }
Esempio n. 5
0
        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));
        }