internal void SliceReceived(string fileUniqueKey, uint receivedSlice)
        {
            if (!TransferStatus.ContainsKey(fileUniqueKey))
            {
                throw new KeyNotFoundException($"FileSendInfo '{fileUniqueKey}' was not registered in FileReceiveProgressCalculator.");
            }

            // Might go backwards (in case of a full file redownload), and that's ok.
            TransferStatus[fileUniqueKey].NextSlice = receivedSlice + 1;

            InvokeProgressEvent();
        }
        internal void SliceRequestReceived(FileSliceSender sender, SliceRequestedEventArgs e)
        {
            if (!TransferStatus.ContainsKey(sender.UniqueKey))
            {
                throw new KeyNotFoundException($"FileSliceSender '{sender.UniqueKey}' was not registered in FileSendProgressCalculator.");
            }

            var nextSlice = e.RequestedSlice + 1;

            if (TransferStatus[sender.UniqueKey].NextSlice < nextSlice)
            {
                TransferStatus[sender.UniqueKey].NextSlice = nextSlice;
            }

            TransferStarted            = true;
            timeoutCountSinceLastSlice = 0;
            UpdateTimer();
            InvokeProgressEvent();
        }