void HandleRetryLimitExceeded(object sender, RetryLimitExceeded retryLimitExceeded) { var getFileTransfer = FileTransferHandler.HandleRetryLimitExceeded(retryLimitExceeded); if (getFileTransfer.Failure) { return; } var inboundFileTransfer = getFileTransfer.Value; _eventLog.Add(new ServerEvent { EventType = EventType.ReceivedRetryLimitExceeded, LocalFolder = inboundFileTransfer.LocalFolderPath, FileName = inboundFileTransfer.FileName, FileSizeInBytes = inboundFileTransfer.FileSizeInBytes, RemoteServerIpAddress = inboundFileTransfer.RemoteServerInfo.SessionIpAddress, RemoteServerPortNumber = inboundFileTransfer.RemoteServerInfo.PortNumber, RetryCounter = inboundFileTransfer.RetryCounter, RemoteServerRetryLimit = inboundFileTransfer.RemoteServerRetryLimit, RetryLockoutExpireTime = inboundFileTransfer.RetryLockoutExpireTime, FileTransferId = inboundFileTransfer.Id }); EventOccurred?.Invoke(this, _eventLog.Last()); SuccessfullyProcessedRequest?.Invoke(this, retryLimitExceeded); }
public Result <FileTransfer> HandleRetryLimitExceeded(RetryLimitExceeded retryLimitExceeded) { var getFileTransfer = GetFileTransferById(retryLimitExceeded.RemoteServerTransferId); if (getFileTransfer.Failure) { ReportError(getFileTransfer.Error); return(Result.Fail <FileTransfer>(getFileTransfer.Error)); } var inboundFileTransfer = getFileTransfer.Value; inboundFileTransfer.Status = FileTransferStatus.RetryLimitExceeded; inboundFileTransfer.RetryLockoutExpireTime = retryLimitExceeded.LockoutExpireTime; var retryLimitErrorMessage = $"Maximum # of attempts to complete stalled file transfer reached or exceeded: {Environment.NewLine}" + $"File Name.................: {inboundFileTransfer.FileName}{Environment.NewLine}" + $"Download Attempts.........: {inboundFileTransfer.RetryCounter}{Environment.NewLine}" + $"Max Attempts Allowed......: {inboundFileTransfer.RemoteServerRetryLimit}{Environment.NewLine}" + $"Current Time..............: {DateTime.Now:MM/dd/yyyy hh:mm:ss.fff tt}{Environment.NewLine}" + $"Download Lockout Expires..: {inboundFileTransfer.RetryLockoutExpireTime:MM/dd/yyyy hh:mm:ss.fff tt}{Environment.NewLine}" + $"Remaining Lockout Time....: {inboundFileTransfer.RetryLockoutTimeRemianing}{Environment.NewLine}"; ReportError(retryLimitErrorMessage); return(Result.Ok(inboundFileTransfer)); }
async Task SendRetryLimitExceededAsync(FileTransfer fileTransfer) { var retryLimitExceeded = new RetryLimitExceeded { LocalServerInfo = MyInfo, RemoteServerInfo = fileTransfer.RemoteServerInfo, RemoteServerTransferId = fileTransfer.RemoteServerTransferId, RetryLimit = Settings.TransferRetryLimit, LockoutExpireTime = fileTransfer.RetryLockoutExpireTime, Status = RequestStatus.InProgress, Direction = TransferDirection.Outbound }; await _requestHandler.SendRequestAsync(retryLimitExceeded); }