public static AmplitudeWrapper Initialize(string api_key, string userId) { if (instance == null) { Debug.Log((object)"AmplitudeWrapper initialized"); instance = new AmplitudeWrapper(api_key, userId); } return(instance); }
private void UpdateServerDelayed(int delayMs, int batchSize = 10) { int num = -1; lock (_serverUpdateLock) { num = Mathf.Max(_serverUpdateDelayMs - (Environment.TickCount - _serverUpdateScheduledTime), 0); if (_serverUpdateDelayMs < 0 || delayMs < num) { _serverUpdateScheduledTime = Environment.TickCount; _serverUpdateDelayMs = delayMs; } if (_serverUpdateBatchSize <= 0 || batchSize < _serverUpdateBatchSize) { _serverUpdateBatchSize = batchSize; } } if (Interlocked.Exchange(ref isUpdateScheduled, 1) == 0) { ThreadPool.QueueUserWorkItem(delegate { AmplitudeWrapper amplitudeWrapper = this; int batch = 1; while (true) { bool flag = false; lock (_serverUpdateLock) { flag = (Mathf.Max(_serverUpdateDelayMs - (Environment.TickCount - _serverUpdateScheduledTime), 0) == 0); batch = _serverUpdateBatchSize; } if (flag || _isAppExiting) { break; } Thread.Sleep(100); } if (!_isAppExiting) { lock (_serverUpdateLock) { _serverUpdateScheduledTime = 0; _serverUpdateDelayMs = -1; _serverUpdateBatchSize = -1; isUpdateScheduled = 0; } logQueue.QueueTask(delegate { amplitudeWrapper.UpdateServer(batch); }); } }); } }