コード例 #1
0
ファイル: ApiReporter.cs プロジェクト: windygu/LkApps
        private void DoUploadBiz()
        {
            long uploadTime = TopUtils.GetCurrentTimeMillis() + FlushInterval;

            while (true)
            {
                try
                {
                    Thread.Sleep(SleepTime);
                    IDictionary <string, Counter> appUserCounterMap = SecurityCounter.GetUserCounter(topClient.appKey);
                    if (TopUtils.GetCurrentTimeMillis() >= uploadTime || (appUserCounterMap.Count * 4 > 65536))
                    {
                        StringBuilder counterBuilder = new StringBuilder();
                        IDictionary <string, Counter> cloneAppUserCounter = SecurityCounter.CloneUserCounter(topClient.appKey);
                        SecurityCounter.CleanUserCounter(topClient.appKey);

                        int count = 0;
                        foreach (KeyValuePair <string, Counter> currentPair in cloneAppUserCounter)
                        {
                            Counter counter = currentPair.Value;
                            if (counterBuilder.Length > 0)
                            {
                                counterBuilder.Append(";");
                            }
                            counterBuilder.Append(currentPair.Key);
                            GenerateCounter(counterBuilder, counter);

                            if ((++count) % 100 == 0)
                            {
                                DoUpload(counterBuilder.ToString(), AppUserSecretType);
                                counterBuilder = new StringBuilder();
                            }
                        }
                        if (counterBuilder.Length > 0)
                        {
                            DoUpload(counterBuilder.ToString(), AppUserSecretType);
                            counterBuilder = new StringBuilder();
                        }

                        Counter appCounter = SecurityCounter.GetAppCounter(topClient.appKey);
                        counterBuilder.Append(SecurityCore.GetAppUserSecretCache().Count);
                        GenerateCounter(counterBuilder, appCounter);
                        appCounter.Reset();

                        long uploadInterval = DoUpload(counterBuilder.ToString(), AppSecretType);
                        uploadTime = TopUtils.GetCurrentTimeMillis() + uploadInterval;
                    }
                }
                catch (Exception e)
                {
                    Log.Error(string.Format("flushSecretApiReporter error: {0}", e.Message));
                }
            }
        }
コード例 #2
0
        private void InitSecretThread()
        {
            Thread uploadThread = new Thread(o =>
            {
                int uploadInterval = FlushInterval;
                while (true)
                {
                    try
                    {
                        Thread.Sleep(uploadInterval);
                        IDictionary <string, object> jsonMap = new Dictionary <string, object>();
                        jsonMap.Add("sessionNum", SecurityCore.GetAppUserSecretCache().Count);
                        jsonMap.Add("encryptPhoneNum", SecurityCounter.GetEncryptPhoneNum());
                        jsonMap.Add("encryptNickNum", SecurityCounter.GetEncryptNickNum());
                        jsonMap.Add("encryptReceiverNameNum", SecurityCounter.GetEncryptReceiverNameNum());

                        jsonMap.Add("decryptPhoneNum", SecurityCounter.GetDecryptPhoneNum());
                        jsonMap.Add("decryptNickNum", SecurityCounter.GetDecryptNickNum());
                        jsonMap.Add("decryptReceiverNameNum", SecurityCounter.GetDecryptReceiverNameNum());

                        jsonMap.Add("searchPhoneNum", SecurityCounter.GetSearchPhoneNum());
                        jsonMap.Add("searchNickNum", SecurityCounter.GetSearchNickNum());
                        jsonMap.Add("searchReceiverNameNum", SecurityCounter.GetSearchReceiverNameNum());
                        SecurityCounter.Reset();

                        String contentJson = TopUtils.ObjectToJson(jsonMap);
                        uploadInterval     = DoUpload(contentJson, SecretType);
                    }
                    catch (Exception e)
                    {
                        Log.Error(string.Format("flushSecretApiReporter error: {0}", e.Message));
                    }
                }
            });

            uploadThread.IsBackground = true;
            uploadThread.Name         = "flushSecretApiReporter-thread";
            uploadThread.Start();
        }
コード例 #3
0
ファイル: ApiReporter.cs プロジェクト: windygu/LkApps
        private void GenerateCounter(StringBuilder counterBuilder, Counter counter)
        {
            // encrypt
            if (counterBuilder.Length > 0)
            {
                counterBuilder.Append(",");
            }
            if (SecurityCounter.GetAppCounter(topClient.appKey).GetEncryptPhoneNum() != 0)
            {
                counterBuilder.Append(counter.GetEncryptPhoneNum());
            }
            else
            {
                counterBuilder.Append("0");
            }
            counterBuilder.Append(",");
            if (counter.GetEncryptNickNum() != 0)
            {
                counterBuilder.Append(counter.GetEncryptNickNum());
            }
            else
            {
                counterBuilder.Append("0");
            }
            counterBuilder.Append(",");
            if (counter.GetEncryptReceiverNameNum() != 0)
            {
                counterBuilder.Append(counter.GetEncryptReceiverNameNum());
            }
            else
            {
                counterBuilder.Append("0");
            }
            counterBuilder.Append(",");
            if (counter.GetEncryptSimpleNum() != 0)
            {
                counterBuilder.Append(counter.GetEncryptSimpleNum());
            }
            else
            {
                counterBuilder.Append("0");
            }
            counterBuilder.Append(",");
            if (counter.GetEncryptSearchNum() != 0)
            {
                counterBuilder.Append(counter.GetEncryptSearchNum());
            }
            else
            {
                counterBuilder.Append("0");
            }

            // decrypt
            counterBuilder.Append(",");
            if (counter.GetDecryptPhoneNum() != 0)
            {
                counterBuilder.Append(counter.GetDecryptPhoneNum());
            }
            else
            {
                counterBuilder.Append("0");
            }
            counterBuilder.Append(",");
            if (counter.GetDecryptNickNum() != 0)
            {
                counterBuilder.Append(counter.GetDecryptNickNum());
            }
            else
            {
                counterBuilder.Append("0");
            }
            counterBuilder.Append(",");
            if (counter.GetDecryptReceiverNameNum() != 0)
            {
                counterBuilder.Append(counter.GetDecryptReceiverNameNum());
            }
            else
            {
                counterBuilder.Append("0");
            }
            counterBuilder.Append(",");
            if (counter.GetDecryptSimpleNum() != 0)
            {
                counterBuilder.Append(counter.GetDecryptSimpleNum());
            }
            else
            {
                counterBuilder.Append("0");
            }
            counterBuilder.Append(",");
            if (counter.GetDecryptSearchNum() != 0)
            {
                counterBuilder.Append(counter.GetDecryptSearchNum());
            }
            else
            {
                counterBuilder.Append("0");
            }

            // search
            counterBuilder.Append(",");
            if (counter.GetSearchPhoneNum() != 0)
            {
                counterBuilder.Append(counter.GetSearchPhoneNum());
            }
            else
            {
                counterBuilder.Append("0");
            }
            counterBuilder.Append(",");
            if (counter.GetSearchNickNum() != 0)
            {
                counterBuilder.Append(counter.GetSearchNickNum());
            }
            else
            {
                counterBuilder.Append("0");
            }
            counterBuilder.Append(",");
            if (counter.GetSearchReceiverNameNum() != 0)
            {
                counterBuilder.Append(counter.GetSearchReceiverNameNum());
            }
            else
            {
                counterBuilder.Append("0");
            }
            counterBuilder.Append(",");
            if (counter.GetSearchSimpleNum() != 0)
            {
                counterBuilder.Append(counter.GetSearchSimpleNum());
            }
            else
            {
                counterBuilder.Append("0");
            }
            counterBuilder.Append(",");
            if (counter.GetSearchSearchNum() != 0)
            {
                counterBuilder.Append(counter.GetSearchSearchNum());
            }
            else
            {
                counterBuilder.Append("0");
            }
        }