private static async Task FileWatcherAsync(CancellationToken cancellation) { LockFile lockFile; do { if (cancellation.IsCancellationRequested) { await CancelAsync(cancellation); await Task.Delay(1000); } var lastWrite = File.GetLastWriteTime(_fileName); if ((lastWrite.Year == 1601 || _lastWrite < lastWrite)) { lockFile = await LockFile.LoadAsync(_fileName); if (lockFile != null) { if (_owned) { if (lockFile.IsOwned && (lockFile.Requests?.Any() ?? false)) { var first = lockFile.Requests.FirstOrDefault(); if (first != null) { OwnershipRequested?.Invoke(first.User, first.Machine, first.Timestamp, lockFile.Requests.Count()); } } } else { _owned = lockFile.IsOwned; if (_owned) { OwnershipObtained?.Invoke(Path.GetFileNameWithoutExtension(_fileName)); } } } } if (lastWrite.Year != 1601) { _lastWrite = lastWrite; } if (cancellation.IsCancellationRequested) { await CancelAsync(cancellation); await Task.Delay(1000); } else { await Task.Delay(3000); } } while (true); }
void ProcessConectedClientMessage(ReceivedClientMessage message) { message.Client.RefreshLastActivity(); switch (message.Message.Message.Event) { case "position": PositionUpdated?.Invoke(message); break; case "netobjcreate": var newNetObj = JsonConvert.DeserializeObject <NetObj>(message.Message.Message.Data.ToString()); _logger.LogInfo("netobjcreate: " + message.Message.Message.Data.ToString()); NetObjCreated?.Invoke(message.Client, newNetObj); break; case "request-ownership": OwnershipRequested?.Invoke(message.Client, new Guid(message.Message.Message.Data.ToString())); break; default: BadConnectedClientMessage?.Invoke(message); break; } }