mirror of
https://github.com/2dust/v2rayN.git
synced 2025-08-29 14:26:20 +00:00
Optimization and Improvement.
Changed callback from synchronous Action<bool, string> to asynchronous Func<bool, string, Task>
This commit is contained in:
parent
8ef68127d4
commit
da28c639b3
6 changed files with 18 additions and 18 deletions
|
@ -35,7 +35,7 @@ public sealed class ClashApiManager
|
|||
return null;
|
||||
}
|
||||
|
||||
public void ClashProxiesDelayTest(bool blAll, List<ClashProxyModel> lstProxy, Action<ClashProxyModel?, string> updateFunc)
|
||||
public void ClashProxiesDelayTest(bool blAll, List<ClashProxyModel> lstProxy, Func<ClashProxyModel?, string, Task> updateFunc)
|
||||
{
|
||||
Task.Run(async () =>
|
||||
{
|
||||
|
@ -79,12 +79,12 @@ public sealed class ClashApiManager
|
|||
tasks.Add(Task.Run(async () =>
|
||||
{
|
||||
var result = await HttpClientHelper.Instance.TryGetAsync(url);
|
||||
updateFunc?.Invoke(it, result);
|
||||
await updateFunc?.Invoke(it, result);
|
||||
}));
|
||||
}
|
||||
await Task.WhenAll(tasks);
|
||||
await Task.Delay(1000);
|
||||
updateFunc?.Invoke(null, "");
|
||||
await updateFunc?.Invoke(null, "");
|
||||
});
|
||||
}
|
||||
|
||||
|
|
|
@ -8,14 +8,14 @@ public class StatisticsManager
|
|||
private Config _config;
|
||||
private ServerStatItem? _serverStatItem;
|
||||
private List<ServerStatItem> _lstServerStat;
|
||||
private Action<ServerSpeedItem>? _updateFunc;
|
||||
private Func<ServerSpeedItem, Task>? _updateFunc;
|
||||
|
||||
private StatisticsXrayService? _statisticsXray;
|
||||
private StatisticsSingboxService? _statisticsSingbox;
|
||||
private static readonly string _tag = "StatisticsHandler";
|
||||
public List<ServerStatItem> ServerStat => _lstServerStat;
|
||||
|
||||
public async Task Init(Config config, Action<ServerSpeedItem> updateFunc)
|
||||
public async Task Init(Config config, Func<ServerSpeedItem, Task> updateFunc)
|
||||
{
|
||||
_config = config;
|
||||
_updateFunc = updateFunc;
|
||||
|
@ -97,9 +97,9 @@ public class StatisticsManager
|
|||
_lstServerStat = await SQLiteHelper.Instance.TableAsync<ServerStatItem>().ToListAsync();
|
||||
}
|
||||
|
||||
private void UpdateServerStatHandler(ServerSpeedItem server)
|
||||
private async Task UpdateServerStatHandler(ServerSpeedItem server)
|
||||
{
|
||||
_ = UpdateServerStat(server);
|
||||
await UpdateServerStat(server);
|
||||
}
|
||||
|
||||
private async Task UpdateServerStat(ServerSpeedItem server)
|
||||
|
@ -123,7 +123,7 @@ public class StatisticsManager
|
|||
server.TodayDown = _serverStatItem.TodayDown;
|
||||
server.TotalUp = _serverStatItem.TotalUp;
|
||||
server.TotalDown = _serverStatItem.TotalDown;
|
||||
_updateFunc?.Invoke(server);
|
||||
await _updateFunc?.Invoke(server);
|
||||
}
|
||||
|
||||
private async Task GetServerStatItem(string indexId)
|
||||
|
|
|
@ -8,11 +8,11 @@ public class StatisticsSingboxService
|
|||
private readonly Config _config;
|
||||
private bool _exitFlag;
|
||||
private ClientWebSocket? webSocket;
|
||||
private Action<ServerSpeedItem>? _updateFunc;
|
||||
private readonly Func<ServerSpeedItem, Task>? _updateFunc;
|
||||
private string Url => $"ws://{Global.Loopback}:{AppManager.Instance.StatePort2}/traffic";
|
||||
private static readonly string _tag = "StatisticsSingboxService";
|
||||
|
||||
public StatisticsSingboxService(Config config, Action<ServerSpeedItem> updateFunc)
|
||||
public StatisticsSingboxService(Config config, Func<ServerSpeedItem, Task> updateFunc)
|
||||
{
|
||||
_config = config;
|
||||
_updateFunc = updateFunc;
|
||||
|
@ -90,7 +90,7 @@ public class StatisticsSingboxService
|
|||
{
|
||||
ParseOutput(result, out var up, out var down);
|
||||
|
||||
_updateFunc?.Invoke(new ServerSpeedItem()
|
||||
await _updateFunc?.Invoke(new ServerSpeedItem()
|
||||
{
|
||||
ProxyUp = (long)(up / 1000),
|
||||
ProxyDown = (long)(down / 1000)
|
||||
|
|
|
@ -6,10 +6,10 @@ public class StatisticsXrayService
|
|||
private ServerSpeedItem _serverSpeedItem = new();
|
||||
private readonly Config _config;
|
||||
private bool _exitFlag;
|
||||
private Action<ServerSpeedItem>? _updateFunc;
|
||||
private readonly Func<ServerSpeedItem, Task>? _updateFunc;
|
||||
private string Url => $"{Global.HttpProtocol}{Global.Loopback}:{AppManager.Instance.StatePort}/debug/vars";
|
||||
|
||||
public StatisticsXrayService(Config config, Action<ServerSpeedItem> updateFunc)
|
||||
public StatisticsXrayService(Config config, Func<ServerSpeedItem, Task> updateFunc)
|
||||
{
|
||||
_config = config;
|
||||
_updateFunc = updateFunc;
|
||||
|
@ -39,7 +39,7 @@ public class StatisticsXrayService
|
|||
if (result != null)
|
||||
{
|
||||
var server = ParseOutput(result) ?? new ServerSpeedItem();
|
||||
_updateFunc?.Invoke(server);
|
||||
await _updateFunc?.Invoke(server);
|
||||
}
|
||||
}
|
||||
catch
|
||||
|
|
|
@ -373,14 +373,14 @@ public class ClashProxiesViewModel : MyReactiveObject
|
|||
|
||||
private async Task ProxiesDelayTest(bool blAll = true)
|
||||
{
|
||||
ClashApiManager.Instance.ClashProxiesDelayTest(blAll, _proxyDetails.ToList(), (item, result) =>
|
||||
ClashApiManager.Instance.ClashProxiesDelayTest(blAll, _proxyDetails.ToList(), async (item, result) =>
|
||||
{
|
||||
if (item == null || result.IsNullOrEmpty())
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
_updateView?.Invoke(EViewAction.DispatcherProxiesDelayTest, new SpeedTestResult() { IndexId = item.Name, Delay = result });
|
||||
await _updateView?.Invoke(EViewAction.DispatcherProxiesDelayTest, new SpeedTestResult() { IndexId = item.Name, Delay = result });
|
||||
});
|
||||
await Task.CompletedTask;
|
||||
}
|
||||
|
|
|
@ -272,13 +272,13 @@ public class MainWindowViewModel : MyReactiveObject
|
|||
}
|
||||
}
|
||||
|
||||
private void UpdateStatisticsHandler(ServerSpeedItem update)
|
||||
private async Task UpdateStatisticsHandler(ServerSpeedItem update)
|
||||
{
|
||||
if (!_config.UiItem.ShowInTaskbar)
|
||||
{
|
||||
return;
|
||||
}
|
||||
_updateView?.Invoke(EViewAction.DispatcherStatistics, update);
|
||||
await _updateView?.Invoke(EViewAction.DispatcherStatistics, update);
|
||||
}
|
||||
|
||||
public void SetStatisticsResult(ServerSpeedItem update)
|
||||
|
|
Loading…
Reference in a new issue