TransferEventArgs.cs 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  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 string Destination { get; private set; }
  10. public TouchEventArgs Touch { get; internal set; }
  11. public ChmodEventArgs Chmod { get; internal set; }
  12. public RemovalEventArgs Removal { get; internal set; }
  13. internal const string UploadTag = "upload";
  14. internal const string DownloadTag = "download";
  15. internal const string MkDirTag = "mkdir";
  16. internal TransferEventArgs()
  17. {
  18. }
  19. internal static TransferEventArgs Read(CustomLogReader areader)
  20. {
  21. TransferEventArgs args = new TransferEventArgs();
  22. using (ElementLogReader reader = new ElementLogReader(areader))
  23. {
  24. while (reader.Read(0))
  25. {
  26. string value;
  27. if (reader.GetEmptyElementValue("filename", out value))
  28. {
  29. args.FileName = value;
  30. }
  31. else if (reader.GetEmptyElementValue("destination", out value))
  32. {
  33. args.Destination = value;
  34. }
  35. else if (SessionRemoteException.IsResult(reader))
  36. {
  37. args.Error = SessionRemoteException.ReadResult(reader);
  38. }
  39. }
  40. }
  41. return args;
  42. }
  43. }
  44. }