mirror of https://github.com/2dust/v2rayN
Refactor CoreHandler
parent
4ccc7aa92d
commit
7a839063d0
|
@ -8,12 +8,14 @@ namespace ServiceLib.Handler
|
|||
/// </summary>
|
||||
public class CoreHandler
|
||||
{
|
||||
private static readonly Lazy<CoreHandler> _instance = new(() => new());
|
||||
public static CoreHandler Instance => _instance.Value;
|
||||
private Config _config;
|
||||
private Process? _process;
|
||||
private Process? _processPre;
|
||||
private Action<bool, string> _updateFunc;
|
||||
|
||||
public CoreHandler(Config config, Action<bool, string> update)
|
||||
public void Init(Config config, Action<bool, string> update)
|
||||
{
|
||||
_config = config;
|
||||
_updateFunc = update;
|
||||
|
|
|
@ -7,16 +7,15 @@ namespace ServiceLib.Services
|
|||
public class SpeedtestService
|
||||
{
|
||||
private Config? _config;
|
||||
private CoreHandler _coreHandler;
|
||||
private List<ServerTestItem> _selecteds;
|
||||
private ESpeedActionType _actionType;
|
||||
private Action<SpeedTestResult> _updateFunc;
|
||||
private bool _exitLoop = false;
|
||||
|
||||
public SpeedtestService(Config config, CoreHandler coreHandler, List<ProfileItem> selecteds, ESpeedActionType actionType, Action<SpeedTestResult> update)
|
||||
public SpeedtestService(Config config, List<ProfileItem> selecteds, ESpeedActionType actionType, Action<SpeedTestResult> update)
|
||||
{
|
||||
_config = config;
|
||||
_coreHandler = coreHandler;
|
||||
|
||||
_actionType = actionType;
|
||||
_updateFunc = update;
|
||||
|
||||
|
@ -137,7 +136,7 @@ namespace ServiceLib.Services
|
|||
{
|
||||
string msg = string.Empty;
|
||||
|
||||
pid = _coreHandler.LoadCoreConfigSpeedtest(_selecteds);
|
||||
pid = CoreHandler.Instance.LoadCoreConfigSpeedtest(_selecteds);
|
||||
if (pid < 0)
|
||||
{
|
||||
UpdateFunc("", ResUI.FailedToRunCore);
|
||||
|
@ -185,7 +184,7 @@ namespace ServiceLib.Services
|
|||
{
|
||||
if (pid > 0)
|
||||
{
|
||||
_coreHandler.CoreStopPid(pid);
|
||||
CoreHandler.Instance.CoreStopPid(pid);
|
||||
}
|
||||
ProfileExHandler.Instance.SaveTo();
|
||||
}
|
||||
|
@ -201,7 +200,7 @@ namespace ServiceLib.Services
|
|||
// _selecteds = _selecteds.OrderBy(t => t.delay).ToList();
|
||||
//}
|
||||
|
||||
pid = _coreHandler.LoadCoreConfigSpeedtest(_selecteds);
|
||||
pid = CoreHandler.Instance.LoadCoreConfigSpeedtest(_selecteds);
|
||||
if (pid < 0)
|
||||
{
|
||||
UpdateFunc("", ResUI.FailedToRunCore);
|
||||
|
@ -254,7 +253,7 @@ namespace ServiceLib.Services
|
|||
|
||||
if (pid > 0)
|
||||
{
|
||||
_coreHandler.CoreStopPid(pid);
|
||||
CoreHandler.Instance.CoreStopPid(pid);
|
||||
}
|
||||
UpdateFunc("", ResUI.SpeedtestingCompleted);
|
||||
ProfileExHandler.Instance.SaveTo();
|
||||
|
@ -263,7 +262,7 @@ namespace ServiceLib.Services
|
|||
private async Task RunSpeedTestMulti()
|
||||
{
|
||||
int pid = -1;
|
||||
pid = _coreHandler.LoadCoreConfigSpeedtest(_selecteds);
|
||||
pid = CoreHandler.Instance.LoadCoreConfigSpeedtest(_selecteds);
|
||||
if (pid < 0)
|
||||
{
|
||||
UpdateFunc("", ResUI.FailedToRunCore);
|
||||
|
@ -319,7 +318,7 @@ namespace ServiceLib.Services
|
|||
|
||||
if (pid > 0)
|
||||
{
|
||||
_coreHandler.CoreStopPid(pid);
|
||||
CoreHandler.Instance.CoreStopPid(pid);
|
||||
}
|
||||
UpdateFunc("", ResUI.SpeedtestingCompleted);
|
||||
ProfileExHandler.Instance.SaveTo();
|
||||
|
|
|
@ -13,7 +13,6 @@ namespace ServiceLib.ViewModels
|
|||
{
|
||||
#region private prop
|
||||
|
||||
private CoreHandler _coreHandler;
|
||||
private bool _isAdministrator { get; set; }
|
||||
|
||||
#endregion private prop
|
||||
|
@ -342,8 +341,7 @@ namespace ServiceLib.ViewModels
|
|||
{
|
||||
ConfigHandler.InitBuiltinRouting(_config);
|
||||
ConfigHandler.InitBuiltinDNS(_config);
|
||||
_coreHandler = new CoreHandler(_config, UpdateHandler);
|
||||
Locator.CurrentMutable.RegisterLazySingleton(() => _coreHandler, typeof(CoreHandler));
|
||||
CoreHandler.Instance.Init(_config, UpdateHandler);
|
||||
|
||||
if (_config.guiItem.enableStatistics)
|
||||
{
|
||||
|
@ -428,7 +426,7 @@ namespace ServiceLib.ViewModels
|
|||
ProfileExHandler.Instance.SaveTo();
|
||||
StatisticsHandler.Instance.SaveTo();
|
||||
StatisticsHandler.Instance.Close();
|
||||
_coreHandler.CoreStop();
|
||||
CoreHandler.Instance.CoreStop();
|
||||
|
||||
Logging.SaveLog("MyAppExit End");
|
||||
}
|
||||
|
@ -750,7 +748,7 @@ namespace ServiceLib.ViewModels
|
|||
//}
|
||||
|
||||
var node = ConfigHandler.GetDefaultServer(_config);
|
||||
_coreHandler.LoadCore(node);
|
||||
CoreHandler.Instance.LoadCore(node);
|
||||
});
|
||||
}
|
||||
|
||||
|
@ -760,7 +758,7 @@ namespace ServiceLib.ViewModels
|
|||
|
||||
ChangeSystemProxyStatusAsync(ESysProxyType.ForcedClear, false);
|
||||
|
||||
_coreHandler.CoreStop();
|
||||
CoreHandler.Instance.CoreStop();
|
||||
}
|
||||
|
||||
#endregion core job
|
||||
|
|
|
@ -667,11 +667,8 @@ namespace ServiceLib.ViewModels
|
|||
return;
|
||||
}
|
||||
//ClearTestResult();
|
||||
var coreHandler = Locator.Current.GetService<CoreHandler>();
|
||||
if (coreHandler != null)
|
||||
{
|
||||
_speedtestHandler = new SpeedtestService(_config, coreHandler, lstSelecteds, actionType, UpdateSpeedtestHandler);
|
||||
}
|
||||
|
||||
_speedtestHandler = new SpeedtestService(_config, lstSelecteds, actionType, UpdateSpeedtestHandler);
|
||||
}
|
||||
|
||||
public void ServerSpeedtestStop()
|
||||
|
|
Loading…
Reference in New Issue