72 lines
1.7 KiB
C#
72 lines
1.7 KiB
C#
using Shadowsocks.Controller;
|
|
using Shadowsocks.Model;
|
|
using System;
|
|
using System.Collections.Generic;
|
|
using System.Net;
|
|
using System.Text;
|
|
|
|
namespace Shadowsocks.Controller.Strategy
|
|
{
|
|
class BalancingStrategy : IStrategy
|
|
{
|
|
ShadowsocksController _controller;
|
|
Random _random;
|
|
|
|
public BalancingStrategy(ShadowsocksController controller)
|
|
{
|
|
_controller = controller;
|
|
_random = new Random();
|
|
}
|
|
|
|
public string Name
|
|
{
|
|
get { return I18N.GetString("Load Balance"); }
|
|
}
|
|
|
|
public string ID
|
|
{
|
|
get { return "com.shadowsocks.strategy.balancing"; }
|
|
}
|
|
|
|
public void ReloadServers()
|
|
{
|
|
// do nothing
|
|
}
|
|
|
|
public Server GetAServer(IStrategyCallerType type, IPEndPoint localIPEndPoint, EndPoint destEndPoint)
|
|
{
|
|
var configs = _controller.GetCurrentConfiguration().configs;
|
|
int index;
|
|
if (type == IStrategyCallerType.TCP)
|
|
{
|
|
index = _random.Next();
|
|
}
|
|
else
|
|
{
|
|
index = localIPEndPoint.GetHashCode();
|
|
}
|
|
return configs[index % configs.Count];
|
|
}
|
|
|
|
public void UpdateLatency(Model.Server server, TimeSpan latency)
|
|
{
|
|
// do nothing
|
|
}
|
|
|
|
public void UpdateLastRead(Model.Server server)
|
|
{
|
|
// do nothing
|
|
}
|
|
|
|
public void UpdateLastWrite(Model.Server server)
|
|
{
|
|
// do nothing
|
|
}
|
|
|
|
public void SetFailure(Model.Server server)
|
|
{
|
|
// do nothing
|
|
}
|
|
}
|
|
}
|