public async Task <Result> SendNotificationFileTransferStalledAsync(int fileTransferId) { var handleTransferStalled = FileTransferHandler.HandleInboundFileTransferStalled(fileTransferId); if (handleTransferStalled.Failure) { return(handleTransferStalled); } var fileTransfer = handleTransferStalled.Value; var notifyTransferStalled = new FileTransferResponse(RequestType.FileTransferStalled) { LocalServerInfo = MyInfo, RemoteServerInfo = fileTransfer.RemoteServerInfo, TransferResponseCode = fileTransfer.TransferResponseCode, RemoteServerTransferId = fileTransfer.Id, Status = RequestStatus.InProgress, Direction = TransferDirection.Outbound }; InboundFileTransferInProgress?.Invoke(this, false); return(await _requestHandler.SendRequestAsync(notifyTransferStalled)); }
async Task SendNotificationFileTransferComplete(FileTransfer inboundFileTransfer) { var fileTransferComplete = new FileTransferResponse(RequestType.FileTransferComplete) { LocalServerInfo = MyInfo, RemoteServerInfo = inboundFileTransfer.RemoteServerInfo, TransferResponseCode = inboundFileTransfer.TransferResponseCode, RemoteServerTransferId = inboundFileTransfer.Id, Status = RequestStatus.InProgress, Direction = TransferDirection.Outbound }; InboundFileTransferInProgress?.Invoke(this, false); await _requestHandler.SendRequestAsync(fileTransferComplete); }
public async Task <Result> AcceptInboundFileTransferAsync(FileTransfer fileTransfer) { var acceptFileTransfer = new FileTransferResponse(RequestType.FileTransferAccepted) { LocalServerInfo = MyInfo, RemoteServerInfo = fileTransfer.RemoteServerInfo, TransferResponseCode = fileTransfer.TransferResponseCode, RemoteServerTransferId = fileTransfer.Id, Status = RequestStatus.InProgress, Direction = TransferDirection.Outbound }; InboundFileTransferInProgress?.Invoke(this, true); var sendRequest = await _requestHandler.AcceptInboundFileTransferAsync(acceptFileTransfer); if (sendRequest.Failure) { InboundFileTransferInProgress?.Invoke(this, false); var abortTransfer = FileTransferHandler.AbortInboundFileTransfer( acceptFileTransfer, sendRequest.Error); return(abortTransfer.Success ? sendRequest : Result.Combine(abortTransfer, sendRequest)); } var socket = _requestHandler.GetSocketForInboundFileTransfer(); if (socket == null) { InboundFileTransferInProgress?.Invoke(this, false); var error = "Unable to retrieve transfer socket, file transfer must be aborted"; var abortTransfer = FileTransferHandler.AbortInboundFileTransfer( acceptFileTransfer, error); return(abortTransfer.Success ? Result.Fail(error) : Result.Combine(abortTransfer, Result.Fail(error))); } var receiveFile = await FileTransferHandler.AcceptInboundFileTransferAsync( fileTransfer, socket, _fileBytes.ToArray(), _token); if (receiveFile.Failure) { InboundFileTransferInProgress?.Invoke(this, false); } return(receiveFile); }