/// <inheritdoc /> public Task UpdatePerformanceAsync(IPAddress address, JudgeNodePerformanceInfo performanceInfo) { Contract.NotNull(address, nameof(address)); Contract.NotNull(performanceInfo, nameof(performanceInfo)); WithStore(store => { if (store.TryGetValue(address, out var info)) { info.Performance = performanceInfo; info.LastHeartBeat = DateTime.UtcNow; info.LastSeen = DateTime.UtcNow; } else { var newInfo = new JudgeNodeInfo(address) { Performance = performanceInfo, LastHeartBeat = DateTime.UtcNow, LastSeen = DateTime.UtcNow }; store.Add(address, newInfo); RemoveExpiredOnNecessary(); } }); return(Task.CompletedTask); }
/// <inheritdoc /> public Task UpdateLastSeenAsync(IPAddress address) { Contract.NotNull(address, nameof(address)); WithStore(store => { if (store.TryGetValue(address, out var info)) { info.LastSeen = DateTime.UtcNow; } else { var newInfo = new JudgeNodeInfo(address) { LastSeen = DateTime.UtcNow }; store.Add(address, newInfo); RemoveExpiredOnNecessary(); } }); return(Task.CompletedTask); }