Browse Source

misc improve

tags/3.0
Licshee 8 years ago
parent
commit
859474b577
4 changed files with 13 additions and 13 deletions
  1. +2
    -2
      shadowsocks-csharp/Controller/Service/GfwListUpdater.cs
  2. +1
    -1
      shadowsocks-csharp/Controller/ShadowsocksController.cs
  3. +9
    -9
      shadowsocks-csharp/Controller/Strategy/StatisticsStrategy.cs
  4. +1
    -1
      shadowsocks-csharp/View/StatisticsStrategyConfigurationForm.cs

+ 2
- 2
shadowsocks-csharp/Controller/Service/GfwListUpdater.cs View File

@@ -42,7 +42,7 @@ namespace Shadowsocks.Controller
string[] rules = local.Split(new char[] { '\r', '\n' }, StringSplitOptions.RemoveEmptyEntries); string[] rules = local.Split(new char[] { '\r', '\n' }, StringSplitOptions.RemoveEmptyEntries);
foreach (string rule in rules) foreach (string rule in rules)
{ {
if (rule.StartsWith("!") || rule.StartsWith("["))
if (rule[0] == '!' || rule[0] == '[')
continue; continue;
lines.Add(rule); lines.Add(rule);
} }
@@ -97,7 +97,7 @@ namespace Shadowsocks.Controller
List<string> valid_lines = new List<string>(lines.Length); List<string> valid_lines = new List<string>(lines.Length);
foreach (string line in lines) foreach (string line in lines)
{ {
if (line.StartsWith("!") || line.StartsWith("["))
if (line[0] == '!' || line[0] == '[')
continue; continue;
valid_lines.Add(line); valid_lines.Add(line);
} }


+ 1
- 1
shadowsocks-csharp/Controller/ShadowsocksController.cs View File

@@ -457,7 +457,7 @@ namespace Shadowsocks.Controller
string[] rules = local.Split(new char[] { '\r', '\n' }, StringSplitOptions.RemoveEmptyEntries); string[] rules = local.Split(new char[] { '\r', '\n' }, StringSplitOptions.RemoveEmptyEntries);
foreach (string rule in rules) foreach (string rule in rules)
{ {
if (rule.StartsWith("!") || rule.StartsWith("["))
if (rule[0] == '!' || rule[0] == '[')
continue; continue;
lines.Add(rule); lines.Add(rule);
} }


+ 9
- 9
shadowsocks-csharp/Controller/Strategy/StatisticsStrategy.cs View File

@@ -18,7 +18,7 @@ namespace Shadowsocks.Controller.Strategy
private readonly Timer _timer; private readonly Timer _timer;
private Dictionary<string, List<AvailabilityStatistics.RawStatisticsData>> _filteredStatistics; private Dictionary<string, List<AvailabilityStatistics.RawStatisticsData>> _filteredStatistics;
private int ChoiceKeptMilliseconds private int ChoiceKeptMilliseconds
=> (int) TimeSpan.FromMinutes(_controller.StatisticsConfiguration.ChoiceKeptMinutes).TotalMilliseconds;
=> (int)TimeSpan.FromMinutes(_controller.StatisticsConfiguration.ChoiceKeptMinutes).TotalMilliseconds;


public StatisticsStrategy(ShadowsocksController controller) public StatisticsStrategy(ShadowsocksController controller)
{ {
@@ -49,11 +49,11 @@ namespace Shadowsocks.Controller.Strategy
var config = _controller.StatisticsConfiguration; var config = _controller.StatisticsConfiguration;
List<AvailabilityStatistics.RawStatisticsData> dataList; List<AvailabilityStatistics.RawStatisticsData> dataList;
if (_filteredStatistics == null || !_filteredStatistics.TryGetValue(serverName, out dataList)) return 0; if (_filteredStatistics == null || !_filteredStatistics.TryGetValue(serverName, out dataList)) return 0;
var successTimes = (float) dataList.Count(data => data.ICMPStatus.Equals(IPStatus.Success.ToString()));
var timedOutTimes = (float) dataList.Count(data => data.ICMPStatus.Equals(IPStatus.TimedOut.ToString()));
var successTimes = (float)dataList.Count(data => data.ICMPStatus == IPStatus.Success.ToString());
var timedOutTimes = (float)dataList.Count(data => data.ICMPStatus == IPStatus.TimedOut.ToString());
var statisticsData = new AvailabilityStatistics.StatisticsData var statisticsData = new AvailabilityStatistics.StatisticsData
{ {
PackageLoss = timedOutTimes/(successTimes + timedOutTimes)*100,
PackageLoss = timedOutTimes / (successTimes + timedOutTimes) * 100,
AverageResponse = Convert.ToInt32(dataList.Average(data => data.RoundtripTime)), AverageResponse = Convert.ToInt32(dataList.Average(data => data.RoundtripTime)),
MinResponse = dataList.Min(data => data.RoundtripTime), MinResponse = dataList.Min(data => data.RoundtripTime),
MaxResponse = dataList.Max(data => data.RoundtripTime) MaxResponse = dataList.Max(data => data.RoundtripTime)
@@ -61,13 +61,13 @@ namespace Shadowsocks.Controller.Strategy
float factor; float factor;
float score = 0; float score = 0;
if (!config.Calculations.TryGetValue("PackageLoss", out factor)) factor = 0; if (!config.Calculations.TryGetValue("PackageLoss", out factor)) factor = 0;
score += statisticsData.PackageLoss*factor;
score += statisticsData.PackageLoss * factor;
if (!config.Calculations.TryGetValue("AverageResponse", out factor)) factor = 0; if (!config.Calculations.TryGetValue("AverageResponse", out factor)) factor = 0;
score += statisticsData.AverageResponse*factor;
score += statisticsData.AverageResponse * factor;
if (!config.Calculations.TryGetValue("MinResponse", out factor)) factor = 0; if (!config.Calculations.TryGetValue("MinResponse", out factor)) factor = 0;
score += statisticsData.MinResponse*factor;
score += statisticsData.MinResponse * factor;
if (!config.Calculations.TryGetValue("MaxResponse", out factor)) factor = 0; if (!config.Calculations.TryGetValue("MaxResponse", out factor)) factor = 0;
score += statisticsData.MaxResponse*factor;
score += statisticsData.MaxResponse * factor;
Logging.Debug($"{serverName} {JsonConvert.SerializeObject(statisticsData)}"); Logging.Debug($"{serverName} {JsonConvert.SerializeObject(statisticsData)}");
return score; return score;
} }
@@ -90,7 +90,7 @@ namespace Shadowsocks.Controller.Strategy
} }
).Aggregate((result1, result2) => result1.score > result2.score ? result1 : result2); ).Aggregate((result1, result2) => result1.score > result2.score ? result1 : result2);


LogWhenEnabled($"Switch to server: {bestResult.server.FriendlyName()} by statistics: score {bestResult.score}");
LogWhenEnabled($"Switch to server: {bestResult.server.FriendlyName()} by statistics: score {bestResult.score}");
_currentServer = bestResult.server; _currentServer = bestResult.server;
} }
catch (Exception e) catch (Exception e)


+ 1
- 1
shadowsocks-csharp/View/StatisticsStrategyConfigurationForm.cs View File

@@ -108,7 +108,7 @@ namespace Shadowsocks.View
Timestamp = dataGroup.First().Timestamp, Timestamp = dataGroup.First().Timestamp,
Ping = (int)dataGroup.Average(data => data.RoundtripTime), Ping = (int)dataGroup.Average(data => data.RoundtripTime),
PackageLoss = (int) PackageLoss = (int)
(dataGroup.Count(data => data.ICMPStatus.Equals(IPStatus.TimedOut.ToString()))
(dataGroup.Count(data => data.ICMPStatus == IPStatus.TimedOut.ToString())
/ (float)dataGroup.Count() * 100) / (float)dataGroup.Count() * 100)
}; };
foreach (var data in finalData) foreach (var data in finalData)


Loading…
Cancel
Save