TransferEventArgs.cs 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. using System.Runtime.InteropServices;
  2. namespace WinSCP
  3. {
  4. [Guid("772FACCC-0786-42E1-B1C8-F08D13C9CD07")]
  5. [ClassInterface(Constants.ClassInterface)]
  6. [ComVisible(true)]
  7. public sealed class TransferEventArgs : FileOperationEventArgs
  8. {
  9. public ProgressSide Side { get; internal set; }
  10. public string Destination { get; private set; }
  11. public TouchEventArgs Touch { get; internal set; }
  12. public ChmodEventArgs Chmod { get; internal set; }
  13. public RemovalEventArgs Removal { get; internal set; }
  14. internal const string UploadTag = "upload";
  15. internal const string DownloadTag = "download";
  16. internal const string MkDirTag = "mkdir";
  17. internal TransferEventArgs()
  18. {
  19. }
  20. internal static TransferEventArgs Read(ProgressSide side, CustomLogReader areader)
  21. {
  22. TransferEventArgs args = new TransferEventArgs() { Side = side };
  23. using (ElementLogReader reader = new ElementLogReader(areader))
  24. {
  25. while (reader.Read(0))
  26. {
  27. string value;
  28. if (reader.GetEmptyElementValue("filename", out value))
  29. {
  30. args.FileName = value;
  31. }
  32. else if (reader.GetEmptyElementValue("destination", out value))
  33. {
  34. args.Destination = value;
  35. }
  36. else if (SessionRemoteException.IsResult(reader))
  37. {
  38. args.Error = SessionRemoteException.ReadResult(reader);
  39. }
  40. }
  41. }
  42. return args;
  43. }
  44. }
  45. }