fix connectivity issue on server loss, fix filecache not updating on changed files, fix crash on exception in character data factory

This commit is contained in:
Stanley Dimant
2022-07-12 01:29:22 +02:00
parent 4959633242
commit 0ba07b9b67
5 changed files with 18 additions and 7 deletions

View File

@@ -29,14 +29,24 @@ public class CharacterDataFactory
_ipcManager = ipcManager;
}
public CharacterData BuildCharacterData()
public CharacterData? BuildCharacterData()
{
if (!_ipcManager.Initialized)
{
throw new ArgumentException("Penumbra is not connected");
}
return CreateCharacterData();
try
{
return CreateCharacterData();
}
catch (Exception e)
{
Logger.Warn("Failed to create character data");
Logger.Warn(e.Message);
Logger.Warn(e.StackTrace ?? string.Empty);
return null;
}
}
private (string, string) GetIndentationForInheritanceLevel(int inheritanceLevel)

View File

@@ -211,7 +211,7 @@ namespace MareSynchronos.Managers
var fileCache = Create(item, _rescanTaskCancellationTokenSource.Token);
if (fileCache != null)
{
db.RemoveRange(db.FileCaches.Where(f => f.Hash == fileCache.Hash));
db.RemoveRange(db.FileCaches.Where(f => f.Filepath.ToLower() == fileCache.Filepath.ToLower()));
await db.AddAsync(fileCache, _rescanTaskCancellationTokenSource.Token);
}
}

View File

@@ -96,6 +96,7 @@ namespace MareSynchronos.Managers
private async Task<CharacterCacheDto?> CreateFullCharacterCache(CancellationToken token)
{
var cache = _characterDataFactory.BuildCharacterData();
if (cache == null) return null;
CharacterCacheDto? cacheDto = null;
await Task.Run(async () =>
@@ -165,9 +166,9 @@ namespace MareSynchronos.Managers
_dalamudUtil.WaitWhileSelfIsDrawing(token);
var characterCache = (await CreateFullCharacterCache(token))!;
var characterCache = (await CreateFullCharacterCache(token));
if (token.IsCancellationRequested) return;
if (characterCache == null || token.IsCancellationRequested) return;
if (characterCache.Hash == (LastSentCharacterData?.Hash ?? "-"))
{

View File

@@ -3,7 +3,7 @@
<PropertyGroup>
<Authors></Authors>
<Company></Company>
<Version>0.1.9.0</Version>
<Version>0.1.10.0</Version>
<Description></Description>
<Copyright></Copyright>
<PackageProjectUrl>https://github.com/Penumbra-Sync/client</PackageProjectUrl>

View File

@@ -292,7 +292,7 @@ namespace MareSynchronos.WebAPI
{
Logger.Debug("Connection restored");
await Task.Delay(TimeSpan.FromSeconds(new Random().Next(5, 10)));
_connectionDto = _connectionHub!.InvokeAsync<ConnectionDto>(ConnectionHubAPI.InvokeHeartbeat, _dalamudUtil.PlayerNameHashed).Result;
_connectionDto = await _connectionHub!.InvokeAsync<ConnectionDto>(ConnectionHubAPI.InvokeHeartbeat, _dalamudUtil.PlayerNameHashed);
Connected?.Invoke();
}