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; }
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(); }
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"); }
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); }
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); }
public void UpdateProfile() { StringBuilder builder = InitConnectionData(_deviceInfo); builder.Append("&user_details="); AppendConnectionData(builder, userProfile.JSONSerializeProfile().ToString()); ConnectionQueue.Enqueue(builder.ToString()); ProcessConnectionQueue(); }
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(); }
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; }
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()); }
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; }