Exemplo n.º 1
0
        public void ProcessServerData(ServerData serverdata)
        {
            log.Debug(string.Format("[ServerID {0}] Server update started", serverdata.ID));
            serverdata.InitializeUpdate(_date, _dateID);

            HttpHelper helper = new HttpHelper();
            Random     rand   = new Random();
            Dictionary <string, string> postDic = new Dictionary <string, string>();
            string referer           = serverdata.SwfPath + "/[[DYNAMIC]]/1";
            int    currentRetryCount = 0;

#if DEBUG
            for (int i = 1; i <= 3; i++)
            {
#else
            for (int i = 1; i < 100; i++)
            {
#endif
                string jsonResult = "";
                postDic["api_pageno"] = i.ToString();
                postDic["api_verno"]  = "1";
                postDic["api_token"]  = serverdata.ApiToken;
                helper.CTRHttp(serverdata.FullPath, referer, postDic, ref jsonResult);

                if (BatchParse(jsonResult, serverdata, i))
                {
                    Thread.Sleep(rand.Next(700, 2000));
                    currentRetryCount = 0;
                }
                else
                {
                    if (currentRetryCount == 2)
                    {
                        string errMsg = string.Format("[ServerID {0}] Page {1}, request failed!", serverdata.ID, i);
                        log.Error(errMsg);
                        throw new WebException(errMsg);
                    }
                    i--;
                    Thread.Sleep(1000 * 3 * (int)Math.Pow(10, currentRetryCount++));
                }
            }

            DateTime newtime = new DateTime(serverdata.Date.Year, serverdata.Date.Month, serverdata.Date.Day,
                                            serverdata.Date.Hour, 2, 0).AddHours(12);
            serverdata.ErrorrCount    = 0;
            serverdata.NextUpdateTime = newtime;
            serverdata.SaveToDataBase();
            serverdata.UpdateTimeToDataBase();
            log.Info(string.Format("[ServerID {0}] Server update finished", serverdata.ID));
        }