ChannelRequestMessage.cs 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. namespace Renci.SshNet.Messages.Connection
  2. {
  3. /// <summary>
  4. /// Represents SSH_MSG_CHANNEL_REQUEST message.
  5. /// </summary>
  6. [Message("SSH_MSG_CHANNEL_REQUEST", 98)]
  7. public class ChannelRequestMessage : ChannelMessage
  8. {
  9. /// <summary>
  10. /// Gets the name of the request.
  11. /// </summary>
  12. /// <value>
  13. /// The name of the request.
  14. /// </value>
  15. public string RequestName { get; private set; }
  16. /// <summary>
  17. /// Gets channel request data.
  18. /// </summary>
  19. public byte[] RequestData { get; private set; }
  20. /// <summary>
  21. /// Initializes a new instance of the <see cref="ChannelRequestMessage"/> class.
  22. /// </summary>
  23. public ChannelRequestMessage()
  24. {
  25. // Required for dynamically loading request type when it comes from the server
  26. }
  27. /// <summary>
  28. /// Initializes a new instance of the <see cref="ChannelRequestMessage"/> class.
  29. /// </summary>
  30. /// <param name="localChannelName">Name of the local channel.</param>
  31. /// <param name="info">The info.</param>
  32. public ChannelRequestMessage(uint localChannelName, RequestInfo info)
  33. {
  34. LocalChannelNumber = localChannelName;
  35. RequestName = info.RequestName;
  36. RequestData = info.GetBytes();
  37. }
  38. /// <summary>
  39. /// Called when type specific data need to be loaded.
  40. /// </summary>
  41. protected override void LoadData()
  42. {
  43. base.LoadData();
  44. RequestName = ReadAsciiString();
  45. RequestData = ReadBytes();
  46. }
  47. /// <summary>
  48. /// Called when type specific data need to be saved.
  49. /// </summary>
  50. protected override void SaveData()
  51. {
  52. base.SaveData();
  53. WriteAscii(RequestName);
  54. Write(RequestData);
  55. }
  56. }
  57. }