예제 #1
0
        private async Task ReportIdentityEvent()
        {
            LiteMetricaCore liteMetricaCore = this;

            if (!liteMetricaCore.IsActivated)
            {
                return;
            }
            bool flag;

            lock (liteMetricaCore.ActiveSessionLock)
            {
                if (liteMetricaCore.ActiveSession == null || liteMetricaCore.ActiveSession.EventCounter == 0UL)
                {
                    return;
                }
                flag = DateTime.UtcNow - Config.Global.IdentityTimestamp >= Config.Global.IdentitySendInterval;
                if (flag)
                {
                    Config.Global.IdentityTimestamp = DateTime.UtcNow;
                }
            }
            if (!flag)
            {
                return;
            }
            await ServiceData.WaitExposeAsync();

            byte[] bytes = Encoding.UTF8.GetBytes(ServiceData.DeviceFingerprint);
            liteMetricaCore.Report(EventFactory.Create(ReportMessage.Session.Event.EventType.EVENT_IDENTITY, bytes, (string)null, (string)null));
            liteMetricaCore.TriggerForcedSend();
        }
예제 #2
0
        private static async Task <Dictionary <string, object> > GetCommonRequestParameters()
        {
            await ServiceData.WaitExposeAsync();

            return(new Dictionary <string, object>()
            {
                {
                    "app_id",
                    (object)(string.IsNullOrWhiteSpace(Config.Global.CustomAppId) ? ServiceData.Product.Id : Config.Global.CustomAppId)
                },
                {
                    "model",
                    (object)ServiceData.Device.ModelName
                },
                {
                    "locale",
                    (object)Config.GetLocale()
                },
                {
                    "os_version",
                    (object)ServiceData.Device.OSVersion.ToString()
                },
                {
                    "manufacturer",
                    (object)ServiceData.Device.Manufacturer
                },
                {
                    "app_platform",
                    (object)ServiceData.Device.StartupPlatform
                },
                {
                    "screen_dpi",
                    (object)ServiceData.Device.Dpi
                },
                {
                    "scalefactor",
                    (object)ServiceData.Device.ScaleFactor.ToString((IFormatProvider)CultureInfo.InvariantCulture)
                },
                {
                    "screen_width",
                    (object)ServiceData.Device.ScreenWidth.ToString((IFormatProvider)CultureInfo.InvariantCulture)
                },
                {
                    "screen_height",
                    (object)ServiceData.Device.ScreenHeight.ToString((IFormatProvider)CultureInfo.InvariantCulture)
                },
                {
                    "analytics_sdk_version",
                    (object)351
                }
            });
        }
예제 #3
0
        private async void Postman()
        {
            LiteMetricaService liteMetricaService = this;
            int fails = 0;

            while (true)
            {
                await ServiceData.WaitExposeAsync();

                try
                {
                    liteMetricaService._tokenSource = new CancellationTokenSource();
                    lock (liteMetricaService.PauseLock)
                    {
                        if (!liteMetricaService.IsPaused)
                        {
                            liteMetricaService.ActiveSession.LastUpdateTimestamp = new ulong?(DateTime.UtcNow.ToUnixTime());
                        }
                    }
                    int num;
                    if (!liteMetricaService.ForceSend && liteMetricaService.ReportedEventsCount < Config.Global.FlushThresholdEventsCounts && liteMetricaService.LastFlushTime.HasValue)
                    {
                        DateTime utcNow           = DateTime.UtcNow;
                        DateTime?lastFlushTime    = liteMetricaService.LastFlushTime;
                        TimeSpan?nullable         = lastFlushTime.HasValue ? new TimeSpan?(utcNow - lastFlushTime.GetValueOrDefault()) : new TimeSpan?();
                        TimeSpan thresholdTimeout = Config.Global.FlushThresholdTimeout;
                        num = nullable.HasValue ? (nullable.GetValueOrDefault() > thresholdTimeout ? 1 : 0) : 0;
                    }
                    else
                    {
                        num = 1;
                    }
                    if (num != 0)
                    {
                        bool?nullable1 = await liteMetricaService.Refresh();

                        bool?nullable2 = liteMetricaService.Flush();
                        if (nullable2.HasValue && nullable2.Value)
                        {
                            liteMetricaService.LastFlushTime       = new DateTime?(DateTime.UtcNow);
                            liteMetricaService.ReportedEventsCount = 0;
                            liteMetricaService.ForceSend           = false;
                            fails = 0;
                        }
                        if (nullable2.HasValue)
                        {
                            liteMetricaService.Snapshot();
                        }
                        if (nullable2.HasValue && !nullable2.Value)
                        {
                            ++fails;
                        }
                        if (fails > 6)
                        {
                            fails = 6;
                        }
                        if (fails > 0)
                        {
                            await liteMetricaService.Wait(TimeSpan.FromSeconds(Math.Pow(2.0, (double)fails)));
                        }
                    }
                    await liteMetricaService.Wait(Config.Global.DispatchPeriod);
                }
                catch (Exception)
                {
                }
            }
        }