Exemple #1
0
        protected IEnumerator _ProcessConnectionQueue()
        {
            while (ConnectionQueue.Count > 0)
            {
                string data      = ConnectionQueue.Peek();
                string urlString = appHost + "/i?" + data;

                Log("Request started: " + urlString);

                WWW www = new WWW(urlString)
                {
                    threadPriority = ThreadPriority.Low
                };

                yield return(www);

                if (string.IsNullOrEmpty(www.error) == false)
                {
                    Log("Request failed: " + www.error);
                    break;
                }

                ConnectionQueue.Dequeue();
                Log("Request completed");
            }

            _isProcessingConnection = false;
        }
Exemple #2
0
        protected void BeginSession()
        {
            Log("Start session");
            if (canReceivePush)
            {
                gcm.Init(GCMProjectNumber);
            }

            StringBuilder builder = InitConnectionDataStringBuilder();

            // compute metrics
            _deviceInfo.JSONSerializeMetrics(builder);
            string metricsString = builder.ToString();

            builder = InitConnectionData(_deviceInfo);

            builder.Append("&sdk_version=");
            AppendConnectionData(builder, SDK_VERSION);

            builder.Append("&begin_session=1");

            builder.Append("&metrics=");
            AppendConnectionData(builder, metricsString);

            ConnectionQueue.Enqueue(builder.ToString());
            ProcessConnectionQueue();
        }
Exemple #3
0
        protected IEnumerator _ProcessConnectionQueue(bool request)
        {
            Log("Start send requests");
            int retry = 0;

            while (ConnectionQueue.Count > 0)
            {
                string data = ConnectionQueue.Peek();
                string urlString;

                if (!request)
                {
                    urlString = appHost + "/i?" + data;
                }
                else
                {
                    urlString = appHost + "/" + data;
                }

                Log("Request started: <" + WWW.UnEscapeURL(urlString) + ">");

                WWW www = new WWW(urlString)
                {
                    threadPriority = ThreadPriority.Low
                };

                yield return(www);

                if (string.IsNullOrEmpty(www.error) == false && retry < maxRetries)
                {
                    Log("Request failed: " + www.error);
                    Log("Wait 5 seconds before try again");
                    yield return(new WaitForSeconds(5f)); //wait 5 seconds before try to send analytics again

                    retry++;
                }
                else
                {
                    ConnectionQueue.Dequeue();
                    if (retry >= maxRetries)
                    {
                        Log(string.Format("Request failed after {0} retries", retry));
                    }
                    else
                    {
                        Log("Request successful: <" + www.text + ">");
                    }
                    retry = 0;
                }

                if (ConnectionQueue.Count > 0)   //if we have more requests
                {
                    Log("Wait 0.2 sec before exit");
                    yield return(new WaitForSeconds(0.2f));    //don't allow to send more than 5 request per second
                }
            }

            _isProcessingConnection = false;
            Log("End send requests");
        }
Exemple #4
0
        private Countly()
        {
            queue      = new ConnectionQueue();
            eventqueue = new List <CountlyEvent>();
            timer      = new Timer(new TimerCallback(( object o ) =>
            {
                OnTimer();
            }),
                                   null,
                                   30 * 1000,
                                   30 * 1000);
            isVisible           = false;
            unsentSessionLength = 0;

            EventTimer = new Timer(new TimerCallback((o) =>
            {
                if (eventqueue.Count != 0)
                {
                    queue.QueueEvents(eventqueue);
                    eventqueue.Clear();
                }
            }),
                                   null,
                                   Timeout.Infinite,
                                   Timeout.Infinite);
        }
        private Countly()
        {
            queue = new ConnectionQueue();
            eventqueue = new List<CountlyEvent>();
            timer = new Timer( new TimerCallback( ( object o ) =>
                {
                    OnTimer();
                }), 
                null,
                30 * 1000,
                30 * 1000);
            isVisible = false;
            unsentSessionLength = 0;

            EventTimer = new Timer(new TimerCallback((o) =>
                {
                    if (eventqueue.Count != 0)
                    {
                        queue.QueueEvents(eventqueue);
                        eventqueue.Clear();
                    }
                }),
                null,
                Timeout.Infinite,
                Timeout.Infinite);
        }
Exemple #6
0
        public virtual void Attribute(string campaign_id)
        {
            StringBuilder builder = new StringBuilder(1024);

            builder.Append("at/" + campaign_id);
            Log(builder.ToString());
            ConnectionQueue.Enqueue(builder.ToString());
            ProcessConnectionQueue(true);
        }
Exemple #7
0
        public void UpdateProfile()
        {
            StringBuilder builder = InitConnectionData(_deviceInfo);

            builder.Append("&user_details=");
            AppendConnectionData(builder, userProfile.JSONSerializeProfile().ToString());

            ConnectionQueue.Enqueue(builder.ToString());
            ProcessConnectionQueue();
        }
Exemple #8
0
        protected void UpdateSession(long duration)
        {
            DeviceInfo    info    = GetDeviceInfo();
            StringBuilder builder = InitConnectionData(info);

            builder.Append("&session_duration=");
            AppendConnectionData(builder, duration.ToString());

            ConnectionQueue.Enqueue(builder.ToString());
            ProcessConnectionQueue();
        }
Exemple #9
0
        protected void RecordEvents(List <Event> events)
        {
            StringBuilder builder = InitConnectionData(_deviceInfo);

            builder.Append("&events=");
            string eventsString = JSONSerializeEvents(events);

            AppendConnectionData(builder, eventsString);

            ConnectionQueue.Enqueue(builder.ToString());
        }
 private Countly()
 {
     queue      = new ConnectionQueue();
     eventqueue = new List <CountlyEvent>();
     timer      = new Timer(new TimerCallback(( object o ) =>
     {
         OnTimer();
     }),
                            null,
                            30 * 1000,
                            30 * 1000);
     isVisible           = false;
     unsentSessionLength = 0;
 }
Exemple #11
0
        public void SendReportWithoutCoroutineCall(int id)
        {
            if (CrashReporter.reports == null || CrashReporter.reports.Count == 0)
            {
                Log("No crash reports found");
                return;
            }

            StringBuilder builder = InitConnectionData(_deviceInfo);

            builder.Append("&crash=");
            string report = CrashReporter.JSONSerializeReport(CrashReporter.reports[id]).ToString();

            AppendConnectionData(builder, report);

            ConnectionQueue.Enqueue(builder.ToString());
        }
Exemple #12
0
        protected void BeginSession()
        {
            DeviceInfo    info    = GetDeviceInfo();
            StringBuilder builder = InitConnectionDataStringBuilder();

            // compute metrics
            info.JSONSerializeMetrics(builder);
            string metricsString = builder.ToString();

            builder = InitConnectionData(info);

            builder.Append("&sdk_version=");
            AppendConnectionData(builder, SDK_VERSION);

            builder.Append("&begin_session=1");

            builder.Append("&metrics=");
            AppendConnectionData(builder, metricsString);

            ConnectionQueue.Enqueue(builder.ToString());
            ProcessConnectionQueue();
        }
 private Countly()
 {
     queue = new ConnectionQueue();
     eventqueue = new List<CountlyEvent>();
     timer = new Timer( new TimerCallback( ( object o ) =>
         {
             OnTimer();
         }),
         null,
         30 * 1000,
         30 * 1000);
     isVisible = false;
     unsentSessionLength = 0;
 }