adjust to await foreach and adjust enqueue ident change

This commit is contained in:
Stanley Dimant
2022-10-09 16:09:14 +02:00
parent 1c8f16fac0
commit b58d882686
2 changed files with 6 additions and 6 deletions

View File

@@ -27,8 +27,8 @@ public class GrpcClientIdentificationService : IHostedService
private CancellationTokenSource _streamCts = new(); private CancellationTokenSource _streamCts = new();
private CancellationTokenSource _faultCheckCts = new(); private CancellationTokenSource _faultCheckCts = new();
public GrpcClientIdentificationService(ILogger<GrpcClientIdentificationService> logger, IdentificationService.IdentificationServiceClient gprcIdentClient, public GrpcClientIdentificationService(ILogger<GrpcClientIdentificationService> logger, IdentificationService.IdentificationServiceClient gprcIdentClient,
IdentificationService.IdentificationServiceClient gprcIdentClientStreamOut, IdentificationService.IdentificationServiceClient gprcIdentClientStreamOut,
IdentificationService.IdentificationServiceClient gprcIdentClientStreamIn, MareMetrics metrics, IConfiguration configuration) IdentificationService.IdentificationServiceClient gprcIdentClientStreamIn, MareMetrics metrics, IConfiguration configuration)
{ {
var config = configuration.GetSection("MareSynchronos"); var config = configuration.GetSection("MareSynchronos");
@@ -226,9 +226,8 @@ public class GrpcClientIdentificationService : IHostedService
{ {
ServerId = _shardName, ServerId = _shardName,
}); });
while (await stream.ResponseStream.MoveNext(cts).ConfigureAwait(false)) await foreach (var cur in stream.ResponseStream.ReadAllAsync(cts).ConfigureAwait(false))
{ {
var cur = stream.ResponseStream.Current;
if (cur.IsOnline) if (cur.IsOnline)
{ {
RemoteCachedIdents[cur.UidWithIdent.Uid.Uid] = cur.UidWithIdent; RemoteCachedIdents[cur.UidWithIdent.Uid.Uid] = cur.UidWithIdent;

View File

@@ -148,9 +148,10 @@ internal class IdentityService : IdentificationService.IdentificationServiceBase
{ {
_logger.LogInformation("Enqueued " + identchange.UidWithIdent.Uid.Uid + ":" + identchange.IsOnline + " from " + identchange.UidWithIdent.Ident.ServerId); _logger.LogInformation("Enqueued " + identchange.UidWithIdent.Uid.Uid + ":" + identchange.IsOnline + " from " + identchange.UidWithIdent.Ident.ServerId);
foreach (var dict in identChanges.Where(k => k.Key != identchange.UidWithIdent.Ident.ServerId)) foreach (var k in identChanges.Keys)
{ {
dict.Value.Enqueue(identchange); if (string.Equals(k, identchange.UidWithIdent.Ident.ServerId, System.StringComparison.Ordinal)) continue;
identChanges[k].Enqueue(identchange);
} }
} }