示例#1
0
        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);
        }
示例#2
0
        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));
        }
示例#3
0
        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);
        }