SftpExtendedRequest.cs 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. using System;
  2. using Renci.SshNet.Sftp.Responses;
  3. namespace Renci.SshNet.Sftp.Requests
  4. {
  5. internal abstract class SftpExtendedRequest : SftpRequest
  6. {
  7. private byte[] _nameBytes;
  8. private string _name;
  9. public override SftpMessageTypes SftpMessageType
  10. {
  11. get { return SftpMessageTypes.Extended; }
  12. }
  13. public string Name
  14. {
  15. get { return _name; }
  16. private set
  17. {
  18. _name = value;
  19. _nameBytes = Utf8.GetBytes(value);
  20. }
  21. }
  22. #if TUNING
  23. /// <summary>
  24. /// Gets the size of the message in bytes.
  25. /// </summary>
  26. /// <value>
  27. /// The size of the messages in bytes.
  28. /// </value>
  29. protected override int BufferCapacity
  30. {
  31. get
  32. {
  33. var capacity = base.BufferCapacity;
  34. capacity += 4; // Name length
  35. capacity += _nameBytes.Length; // Name
  36. return capacity;
  37. }
  38. }
  39. #endif
  40. protected SftpExtendedRequest(uint protocolVersion, uint requestId, Action<SftpStatusResponse> statusAction, string name)
  41. : base(protocolVersion, requestId, statusAction)
  42. {
  43. Name = name;
  44. }
  45. protected override void SaveData()
  46. {
  47. base.SaveData();
  48. this.WriteBinaryString(_nameBytes);
  49. }
  50. }
  51. }