/// <summary> /// Called when the agent received a file transfer request from a peer. /// </summary> /// <param name="transfer">The file transfer request from the peer.</param> private void OnFileTransferRequested(IncomingFileTransfer transfer) { if (transfer == null) { throw new ArgumentNullException(nameof(transfer)); } string sender = transfer.Peer.ApplicationName; string filename = transfer.FileName; string path = Path.Combine(Tizen.Applications.Application.Current.DirectoryInfo.Data, filename); Logger.Info($"sender:{sender}, file:{filename}"); transfer.Progress += (s, e) => { // TODO: Insert code to check file transfer progress Logger.Info($"file transfer progress: {e.Progress}"); }; transfer.Finished += (s, e) => { // TODO: Insert code to check if file transfer has been succeeded or not Logger.Info($"file transfer result: {e.Result}"); }; // Remove a file if exists if (File.Exists(path)) { File.Delete(path); } // Start the transfer transfer.Receive(path); }
protected override void ProcessNewChannel(string object_path, uint initiator_handle, uint target_handle, ChannelDetails c) { Console.WriteLine("Processing new channel for file transfer"); string filename = (string)c.Properties[Constants.CHANNEL_TYPE_FILETRANSFER + ".Filename"]; string content_type = (string)c.Properties[Constants.CHANNEL_TYPE_FILETRANSFER + ".ContentType"]; ulong size = (ulong)c.Properties[Constants.CHANNEL_TYPE_FILETRANSFER + ".Size"]; Contact contact = Connection.Roster.GetContact(target_handle); FileTransferChannel ft = null; FileTransfer transfer = null; try { ft = new FileTransferChannel(this.Connection, object_path, initiator_handle, target_handle, filename, content_type, (long)size); if (initiator_handle != Connection.SelfHandle) { transfer = new IncomingFileTransfer(contact, ft); } else { transfer = new OutgoingFileTransfer(contact, ft); } if (transfer != null) { DispatchManager dm = Connection.DispatchManager; dm.Add(contact, transfer.OriginalFilename, transfer); } } catch (Exception e) { Console.WriteLine(e.ToString()); if (transfer != null) { transfer.Dispose(); } else if (ft != null) { ft.Dispose(); } } }
private void ProcessIncomingTransfer(IncomingFileTransfer ift) { if (ift.Writer != null) // already processed { return; } ift.Writer = new BlockFileWriter(ift.Name, ift.BlockSize, ift.BytesTotal); var respond = new ClFileTransferRespond { Result = FileTransferRequestResult.Accepted, SessionId = ift.Id, BlockSize = ift.BlockSize }; client.Send(respond); }
private void OnSvFileTransferRequest(SvFileTransferRequest msg) { var info = new IncomingFileTransferInfo { Id = msg.SessionId, Sender = msg.Username, Name = msg.FileName, Size = msg.FileSize, Hash = msg.FileHash, InitBlockSize = Math.Min(blockSize, msg.BlockSize) }; var ft = new IncomingFileTransfer(this, info); // XXX: check key presence assignedFts.Add(ft.Id, ft); Root.Log(LogLevel.Info, "FileTransferManager: created incoming session [file='{0}', sid={1}]", msg.FileName, msg.SessionId); OnTransferRequestReceived(ft); }