Skip to content

Commit b47d186

Browse files
committed
keep synchronizer initialized OnSleep
1 parent 9c3c627 commit b47d186

File tree

6 files changed

+83
-35
lines changed

6 files changed

+83
-35
lines changed

Diff for: Chaincase.Common/Chaincase.Common.csproj

+1-1
Original file line numberDiff line numberDiff line change
@@ -8,9 +8,9 @@
88
<ProjectReference Include="..\WalletWasabi\WalletWasabi.Standard\WalletWasabi.Standard.csproj" />
99
</ItemGroup>
1010
<ItemGroup>
11-
<PackageReference Include="NBitcoin" Version="5.0.75" />
1211
<PackageReference Include="ReactiveUI" Version="13.2.2" />
1312
<PackageReference Include="ReactiveUI.Blazor" Version="13.2.2" />
13+
<PackageReference Include="NBitcoin" Version="5.0.76" />
1414
</ItemGroup>
1515
<ItemGroup>
1616
<Folder Include="Models\" />

Diff for: Chaincase.Common/ChaincaseSynchronizer.cs

+48
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
using System;
2+
using System.Net;
3+
using System.Threading;
4+
using System.Threading.Tasks;
5+
using NBitcoin;
6+
using WalletWasabi.Services;
7+
using WalletWasabi.Stores;
8+
using WalletWasabi.WebClients.Wasabi;
9+
10+
namespace Chaincase.Common.Services
11+
{
12+
public class ChaincaseSynchronizer : WasabiSynchronizer
13+
{
14+
public ChaincaseSynchronizer(Network network, BitcoinStore bitcoinStore, WasabiClient client)
15+
: base(network, bitcoinStore, client)
16+
{
17+
}
18+
19+
public ChaincaseSynchronizer(Network network, BitcoinStore bitcoinStore, Func<Uri> baseUriAction, EndPoint torSocks5EndPoint)
20+
: base(network, bitcoinStore, baseUriAction, torSocks5EndPoint)
21+
{
22+
}
23+
24+
public ChaincaseSynchronizer(Network network, BitcoinStore bitcoinStore, Uri baseUri, EndPoint torSocks5EndPoint)
25+
: base(network, bitcoinStore, baseUri, torSocks5EndPoint)
26+
{
27+
}
28+
29+
public async Task SleepAsync()
30+
{
31+
Interlocked.CompareExchange(ref _running, 2, 1); // If running, make it stopping.
32+
Cancel?.Cancel();
33+
while (Interlocked.CompareExchange(ref _running, 3, 0) == 2)
34+
{
35+
await Task.Delay(50);
36+
}
37+
Cancel?.Dispose();
38+
Cancel = null;
39+
}
40+
41+
public void Resume(TimeSpan requestInterval, TimeSpan feeQueryRequestInterval, int maxFiltersToSyncAtInitialization)
42+
{
43+
Interlocked.CompareExchange(ref _running, 3, 1); // if stopped, make it running
44+
Cancel = new CancellationTokenSource();
45+
Start(requestInterval, feeQueryRequestInterval, maxFiltersToSyncAtInitialization);
46+
}
47+
}
48+
}

Diff for: Chaincase.Common/Global.cs

+7-7
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@
2828
using WalletWasabi.Wallets;
2929
using Nito.AsyncEx;
3030
using Chaincase.Common.Contracts;
31+
using Chaincase.Common.Services;
3132

3233
namespace Chaincase.Common
3334
{
@@ -44,7 +45,7 @@ public class Global
4445
public AddressManager AddressManager { get; private set; }
4546

4647
public NodesGroup Nodes { get; private set; }
47-
public WasabiSynchronizer Synchronizer { get; private set; }
48+
public ChaincaseSynchronizer Synchronizer { get; private set; }
4849
public FeeProviders FeeProviders { get; private set; }
4950
public WalletManager WalletManager { get; private set; }
5051
public TransactionBroadcaster TransactionBroadcaster { get; set; }
@@ -141,11 +142,11 @@ public async Task InitializeNoWalletAsync(CancellationToken cancellationToken =
141142

142143
if (Config.UseTor)
143144
{
144-
Synchronizer = new WasabiSynchronizer(Network, BitcoinStore, () => Config.GetCurrentBackendUri(), Config.TorSocks5EndPoint);
145+
Synchronizer = new ChaincaseSynchronizer(Network, BitcoinStore, () => Config.GetCurrentBackendUri(), Config.TorSocks5EndPoint);
145146
}
146147
else
147148
{
148-
Synchronizer = new WasabiSynchronizer(Network, BitcoinStore, Config.GetFallbackBackendUri(), null);
149+
Synchronizer = new ChaincaseSynchronizer(Network, BitcoinStore, Config.GetFallbackBackendUri(), null);
149150
}
150151

151152
#region TorProcessInitialization
@@ -569,8 +570,7 @@ public async Task OnResuming()
569570

570571
var requestInterval = (Network == Network.RegTest) ? TimeSpan.FromSeconds(5) : TimeSpan.FromSeconds(30);
571572
int maxFiltSyncCount = Network == Network.Main ? 1000 : 10000; // On testnet, filters are empty, so it's faster to query them together
572-
Synchronizer = new WasabiSynchronizer(Network, BitcoinStore, () => Config.GetCurrentBackendUri(), Config.TorSocks5EndPoint);
573-
Synchronizer.Start(requestInterval, TimeSpan.FromMinutes(5), maxFiltSyncCount);
573+
Synchronizer.Resume(requestInterval, TimeSpan.FromMinutes(5), maxFiltSyncCount);
574574
Logger.LogInfo("Global.OnResuming():Start synchronizing filters...");
575575

576576
if (Wallet?.ChaumianClient is { })
@@ -646,8 +646,8 @@ public async Task OnSleeping()
646646
if (synchronizer is { })
647647

648648
{
649-
await synchronizer.StopAsync();
650-
Logger.LogInfo($"Global.OnSleeping():{nameof(Synchronizer)} is stopped.");
649+
await synchronizer.SleepAsync();
650+
Logger.LogInfo($"Global.OnSleeping():{nameof(Synchronizer)} is sleeping.");
651651
}
652652

653653
var addressManagerFilePath = AddressManagerFilePath;

Diff for: Chaincase.sln

+25-25
Original file line numberDiff line numberDiff line change
@@ -10,15 +10,15 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WalletWasabi.Standard", "Wa
1010
EndProject
1111
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Chaincase.Common", "Chaincase.Common\Chaincase.Common.csproj", "{96670874-0C12-47C2-94A3-4B7CA7DBCED4}"
1212
EndProject
13-
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Chaincase.Android", "Chaincase.Android\Chaincase.Android.csproj", "{DEE5F322-CA7E-40A6-A727-821A1EE262EE}"
14-
EndProject
1513
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Chaincase.UI", "Chaincase.UI\Chaincase.UI.csproj", "{15DF9C65-C954-4264-8B87-EF1D07B26D3B}"
1614
EndProject
1715
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Chaincase.SSB", "Chaincase.SSB\Chaincase.SSB.csproj", "{396B25F5-ACC6-4718-A5F8-DADC52FCFC2E}"
1816
EndProject
1917
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Xamarin.iOS.Tor", "Xamarin.iOS.Tor\Xamarin.iOS.Tor.csproj", "{4B9C81E8-049C-425D-BD7A-BFBF586A7F64}"
2018
EndProject
21-
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Xamarin.iOS.Tor.Tests", "Xamarin.iOS.Tor.Tests\Xamarin.iOS.Tor.Tests.csproj", "{AB0BE8BB-12F5-438B-A850-F5409B78654F}"
19+
Project("{9344BDBB-3E7F-41FC-A0DD-8665D75EE146}") = "Chaincase.Android", "Chaincase.Android\Chaincase.Android.csproj", "{945B448E-EA19-4C18-83C7-AD9312DCD89E}"
20+
EndProject
21+
Project("{9344BDBB-3E7F-41FC-A0DD-8665D75EE146}") = "Xamarin.iOS.Tor.Tests", "Xamarin.iOS.Tor.Tests\Xamarin.iOS.Tor.Tests.csproj", "{8F7B7E7F-3A69-47F4-9015-087CF3FD1622}"
2222
EndProject
2323
Global
2424
GlobalSection(SolutionConfigurationPlatforms) = preSolution
@@ -109,8 +109,6 @@ Global
109109
{96670874-0C12-47C2-94A3-4B7CA7DBCED4}.Release|x64.Build.0 = Release|Any CPU
110110
{96670874-0C12-47C2-94A3-4B7CA7DBCED4}.Release|x86.ActiveCfg = Release|Any CPU
111111
{96670874-0C12-47C2-94A3-4B7CA7DBCED4}.Release|x86.Build.0 = Release|Any CPU
112-
{DEE5F322-CA7E-40A6-A727-821A1EE262EE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
113-
{DEE5F322-CA7E-40A6-A727-821A1EE262EE}.Debug|Any CPU.Build.0 = Debug|Any CPU
114112
{464A7AE3-7950-4FAC-9FE0-10B9D055E9F0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
115113
{464A7AE3-7950-4FAC-9FE0-10B9D055E9F0}.Debug|Any CPU.Build.0 = Debug|Any CPU
116114
{464A7AE3-7950-4FAC-9FE0-10B9D055E9F0}.Debug|iPhone.ActiveCfg = Debug|Any CPU
@@ -183,26 +181,28 @@ Global
183181
{4B9C81E8-049C-425D-BD7A-BFBF586A7F64}.Release|x64.Build.0 = Release|Any CPU
184182
{4B9C81E8-049C-425D-BD7A-BFBF586A7F64}.Release|x86.ActiveCfg = Release|Any CPU
185183
{4B9C81E8-049C-425D-BD7A-BFBF586A7F64}.Release|x86.Build.0 = Release|Any CPU
186-
{AB0BE8BB-12F5-438B-A850-F5409B78654F}.Debug|Any CPU.ActiveCfg = Debug|iPhone
187-
{AB0BE8BB-12F5-438B-A850-F5409B78654F}.Debug|Any CPU.Build.0 = Debug|iPhone
188-
{AB0BE8BB-12F5-438B-A850-F5409B78654F}.Debug|iPhone.ActiveCfg = Debug|iPhone
189-
{AB0BE8BB-12F5-438B-A850-F5409B78654F}.Debug|iPhone.Build.0 = Debug|iPhone
190-
{AB0BE8BB-12F5-438B-A850-F5409B78654F}.Debug|iPhoneSimulator.ActiveCfg = Debug|iPhoneSimulator
191-
{AB0BE8BB-12F5-438B-A850-F5409B78654F}.Debug|iPhoneSimulator.Build.0 = Debug|iPhoneSimulator
192-
{AB0BE8BB-12F5-438B-A850-F5409B78654F}.Debug|x64.ActiveCfg = Debug|iPhone
193-
{AB0BE8BB-12F5-438B-A850-F5409B78654F}.Debug|x64.Build.0 = Debug|iPhone
194-
{AB0BE8BB-12F5-438B-A850-F5409B78654F}.Debug|x86.ActiveCfg = Debug|iPhone
195-
{AB0BE8BB-12F5-438B-A850-F5409B78654F}.Debug|x86.Build.0 = Debug|iPhone
196-
{AB0BE8BB-12F5-438B-A850-F5409B78654F}.Release|Any CPU.ActiveCfg = Release|iPhone
197-
{AB0BE8BB-12F5-438B-A850-F5409B78654F}.Release|Any CPU.Build.0 = Release|iPhone
198-
{AB0BE8BB-12F5-438B-A850-F5409B78654F}.Release|iPhone.ActiveCfg = Release|iPhone
199-
{AB0BE8BB-12F5-438B-A850-F5409B78654F}.Release|iPhone.Build.0 = Release|iPhone
200-
{AB0BE8BB-12F5-438B-A850-F5409B78654F}.Release|iPhoneSimulator.ActiveCfg = Release|iPhoneSimulator
201-
{AB0BE8BB-12F5-438B-A850-F5409B78654F}.Release|iPhoneSimulator.Build.0 = Release|iPhoneSimulator
202-
{AB0BE8BB-12F5-438B-A850-F5409B78654F}.Release|x64.ActiveCfg = Release|iPhone
203-
{AB0BE8BB-12F5-438B-A850-F5409B78654F}.Release|x64.Build.0 = Release|iPhone
204-
{AB0BE8BB-12F5-438B-A850-F5409B78654F}.Release|x86.ActiveCfg = Release|iPhone
205-
{AB0BE8BB-12F5-438B-A850-F5409B78654F}.Release|x86.Build.0 = Release|iPhone
184+
{945B448E-EA19-4C18-83C7-AD9312DCD89E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
185+
{945B448E-EA19-4C18-83C7-AD9312DCD89E}.Debug|Any CPU.Build.0 = Debug|Any CPU
186+
{8F7B7E7F-3A69-47F4-9015-087CF3FD1622}.Debug|Any CPU.ActiveCfg = Debug|iPhone
187+
{8F7B7E7F-3A69-47F4-9015-087CF3FD1622}.Debug|Any CPU.Build.0 = Debug|iPhone
188+
{8F7B7E7F-3A69-47F4-9015-087CF3FD1622}.Debug|iPhone.ActiveCfg = Debug|iPhone
189+
{8F7B7E7F-3A69-47F4-9015-087CF3FD1622}.Debug|iPhone.Build.0 = Debug|iPhone
190+
{8F7B7E7F-3A69-47F4-9015-087CF3FD1622}.Debug|iPhoneSimulator.ActiveCfg = Debug|iPhoneSimulator
191+
{8F7B7E7F-3A69-47F4-9015-087CF3FD1622}.Debug|iPhoneSimulator.Build.0 = Debug|iPhoneSimulator
192+
{8F7B7E7F-3A69-47F4-9015-087CF3FD1622}.Debug|x64.ActiveCfg = Debug|iPhone
193+
{8F7B7E7F-3A69-47F4-9015-087CF3FD1622}.Debug|x64.Build.0 = Debug|iPhone
194+
{8F7B7E7F-3A69-47F4-9015-087CF3FD1622}.Debug|x86.ActiveCfg = Debug|iPhone
195+
{8F7B7E7F-3A69-47F4-9015-087CF3FD1622}.Debug|x86.Build.0 = Debug|iPhone
196+
{8F7B7E7F-3A69-47F4-9015-087CF3FD1622}.Release|Any CPU.ActiveCfg = Release|iPhone
197+
{8F7B7E7F-3A69-47F4-9015-087CF3FD1622}.Release|Any CPU.Build.0 = Release|iPhone
198+
{8F7B7E7F-3A69-47F4-9015-087CF3FD1622}.Release|iPhone.ActiveCfg = Release|iPhone
199+
{8F7B7E7F-3A69-47F4-9015-087CF3FD1622}.Release|iPhone.Build.0 = Release|iPhone
200+
{8F7B7E7F-3A69-47F4-9015-087CF3FD1622}.Release|iPhoneSimulator.ActiveCfg = Release|iPhoneSimulator
201+
{8F7B7E7F-3A69-47F4-9015-087CF3FD1622}.Release|iPhoneSimulator.Build.0 = Release|iPhoneSimulator
202+
{8F7B7E7F-3A69-47F4-9015-087CF3FD1622}.Release|x64.ActiveCfg = Release|iPhone
203+
{8F7B7E7F-3A69-47F4-9015-087CF3FD1622}.Release|x64.Build.0 = Release|iPhone
204+
{8F7B7E7F-3A69-47F4-9015-087CF3FD1622}.Release|x86.ActiveCfg = Release|iPhone
205+
{8F7B7E7F-3A69-47F4-9015-087CF3FD1622}.Release|x86.Build.0 = Release|iPhone
206206
EndGlobalSection
207207
GlobalSection(SolutionProperties) = preSolution
208208
HideSolutionNode = FALSE

Diff for: Chaincase/Chaincase.csproj

+1-1
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@
2626
<PackageReference Include="Newtonsoft.Json" Version="12.0.3" />
2727
<PackageReference Include="ReactiveUI.XamForms" Version="13.2.2" />
2828
<PackageReference Include="Splat.Microsoft.Extensions.DependencyInjection" Version="10.0.1" />
29-
<PackageReference Include="NBitcoin" Version="5.0.75" />
29+
<PackageReference Include="NBitcoin" Version="5.0.76" />
3030
<PackageReference Include="ReactiveUI" Version="13.2.2" />
3131
<PackageReference Include="Microsoft.AspNetCore.SignalR.Client" Version="3.1.12" />
3232
</ItemGroup>

0 commit comments

Comments
 (0)