예제 #1
0
        public void loadFromFile()
        {
            if (!Directory.Exists(logPath_))
            {
                return;
            }

            // 总流量统计文件
            ///
            /// 文件结构
            /// LastUpdate [date] [time]
            /// UP [readable string] [amount]
            /// DOWN [readable string] [amount]
            /// 每行每个数据空格分隔
            ///
            var overallPath = Path.Combine(logPath_, Global.StatisticLogOverall);

            if (File.Exists(overallPath))
            {
                try
                {
                    using (var overallReader = new StreamReader(overallPath))
                    {
                        while (!overallReader.EndOfStream)
                        {
                            var line = overallReader.ReadLine();
                            if (line.StartsWith("LastUpdate"))
                            {
                            }
                            else if (line.StartsWith("UP"))
                            {
                                var datas = line.Split(' ');
                                if (datas.Length < 3)
                                {
                                    return;
                                }
                                TotalUp = ulong.Parse(datas[2]);
                            }
                            else if (line.StartsWith("DOWN"))
                            {
                                var datas = line.Split(' ');
                                if (datas.Length < 3)
                                {
                                    return;
                                }
                                TotalDown = ulong.Parse(datas[2]);
                            }
                            else if (line.StartsWith("*"))
                            {
                                var datas = line.Split(' ');
                                if (datas.Length < 6)
                                {
                                    return;
                                }
                                var name      = datas[1];
                                var address   = datas[2];
                                var port      = int.Parse(datas[3]);
                                var path      = datas[4];
                                var totalUp   = ulong.Parse(datas[5]);
                                var totalDown = ulong.Parse(datas[6]);

                                var index = Statistic.FindIndex(item => item.address == address && item.port == port);
                                if (index != -1)
                                {
                                    Statistic[index].totalUp   = totalUp;
                                    Statistic[index].totalDown = totalDown;
                                }
                                else
                                {
                                    var s = new Mode.ServerStatistics(name, address, port, path, totalUp, totalDown, 0, 0);
                                    Statistic.Add(s);
                                }
                            }
                        }
                    }
                }
                catch { }
            }

            // 当天流量记录文件
            var dailyPath = Path.Combine(logPath_, $"{DateTime.Now.ToLongDateString()}.txt");

            if (File.Exists(dailyPath))
            {
                try
                {
                    using (var dailyReader = new StreamReader(dailyPath))
                    {
                        while (!dailyReader.EndOfStream)
                        {
                            var line = dailyReader.ReadLine();
                            if (line.StartsWith("LastUpdate"))
                            {
                            }
                            else if (line.StartsWith("*"))
                            {
                                var datas = line.Split(' ');
                                if (datas.Length < 6)
                                {
                                    return;
                                }
                                var name      = datas[1];
                                var address   = datas[2];
                                var port      = int.Parse(datas[3]);
                                var path      = datas[4];
                                var todayUp   = ulong.Parse(datas[5]);
                                var todayDown = ulong.Parse(datas[6]);

                                var index = Statistic.FindIndex(item => item.address == address && item.port == port);
                                if (index != -1)
                                {
                                    Statistic[index].todayUp   = todayUp;
                                    Statistic[index].todayDown = todayDown;
                                }
                                else
                                {
                                    var s = new Mode.ServerStatistics(name, address, port, path, 0, 0, todayUp, todayDown);
                                    Statistic.Add(s);
                                }
                            }
                        }
                    }
                }
                catch { }
            }
        }
예제 #2
0
        public void LoadFromFile()
        {
            if (!Directory.Exists(logPath_))
            {
                return;
            }

            // 总流量统计文件
            ///
            /// 文件结构
            /// LastUpdate [date] [time]
            /// UP [readable string] [amount]
            /// DOWN [readable string] [amount]
            /// 每行每个数据空格分隔

            try
            {
                Utils.SaveLog(logPath_ + Global.StatisticLogOverall);
                var overallPath = Path.Combine(logPath_, Global.StatisticLogOverall);
                if (File.Exists(overallPath))
                {
                    using (var overallReader = new StreamReader(overallPath))
                    {
                        while (!overallReader.EndOfStream)
                        {
                            var line = overallReader.ReadLine();
                            if (line.StartsWith("LastUpdate"))
                            {
                            }
                            else if (line.StartsWith("UP"))
                            {
                                var datas = line.Split(' ');
                                if (datas.Length < 3)
                                {
                                    return;
                                }
                                TotalUp = ulong.Parse(datas[2]);
                            }
                            else if (line.StartsWith("DOWN"))
                            {
                                var datas = line.Split(' ');
                                if (datas.Length < 3)
                                {
                                    return;
                                }
                                TotalDown = ulong.Parse(datas[2]);
                            }
                            else if (line.StartsWith("*"))
                            {
                                var datas = line.Split(' ');
                                if (datas.Length < 8)
                                {
                                    return;
                                }
                                var name      = datas[1];
                                var address   = datas[2];
                                var port      = int.Parse(datas[3]);
                                var path      = datas[4];
                                var host      = datas[5];
                                var totalUp   = ulong.Parse(datas[6]);
                                var totalDown = ulong.Parse(datas[7]);

                                var temp  = new ServerStatistics(name, address, port, path, host, 0, 0, 0, 0);
                                var index = Statistic.FindIndex(item => Utils.IsIdenticalServer(item, temp));
                                if (index != -1)
                                {
                                    Statistic[index].totalUp   = totalUp;
                                    Statistic[index].totalDown = totalDown;
                                }
                                else
                                {
                                    var s = new Mode.ServerStatistics(name, address, port, path, host, totalUp, totalDown, 0, 0);
                                    Statistic.Add(s);
                                }
                            }
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                Utils.SaveLog(ex.Message, ex);
            }

            try
            {
                Utils.SaveLog(logPath_ + $"{DateTime.Now.ToString("yyyy-MM-dd")}.txt");
                var dailyPath = Path.Combine(logPath_, $"{DateTime.Now.ToString("yyyy-MM-dd")}.txt");
                if (File.Exists(dailyPath))
                {
                    using (var dailyReader = new StreamReader(dailyPath))
                    {
                        while (!dailyReader.EndOfStream)
                        {
                            var line = dailyReader.ReadLine();
                            if (line.StartsWith("LastUpdate"))
                            {
                            }
                            else if (line.StartsWith("*"))
                            {
                                var datas = line.Split(' ');
                                if (datas.Length < 8)
                                {
                                    return;
                                }
                                var name      = datas[1];
                                var address   = datas[2];
                                var port      = int.Parse(datas[3]);
                                var path      = datas[4];
                                var host      = datas[5];
                                var todayUp   = ulong.Parse(datas[6]);
                                var todayDown = ulong.Parse(datas[7]);

                                var temp  = new ServerStatistics(name, address, port, path, host, 0, 0, 0, 0);
                                var index = Statistic.FindIndex(item => Utils.IsIdenticalServer(item, temp));
                                if (index != -1)
                                {
                                    Statistic[index].todayUp   = todayUp;
                                    Statistic[index].todayDown = todayDown;
                                }
                                else
                                {
                                    var s = new Mode.ServerStatistics(name, address, port, path, host, 0, 0, todayUp, todayDown);
                                    Statistic.Add(s);
                                }
                            }
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                Utils.SaveLog(ex.Message, ex);
            }
        }