ChannelOpenFailureMessage.cs 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687
  1. namespace Renci.SshNet.Messages.Connection
  2. {
  3. /// <summary>
  4. /// Represents SSH_MSG_CHANNEL_OPEN_FAILURE message.
  5. /// </summary>
  6. [Message("SSH_MSG_CHANNEL_OPEN_FAILURE", 92)]
  7. public class ChannelOpenFailureMessage : ChannelMessage
  8. {
  9. internal const uint AdministrativelyProhibited = 1;
  10. internal const uint ConnectFailed = 2;
  11. internal const uint UnknownChannelType = 3;
  12. internal const uint ResourceShortage = 4;
  13. /// <summary>
  14. /// Gets failure reason code.
  15. /// </summary>
  16. public uint ReasonCode { get; private set; }
  17. /// <summary>
  18. /// Gets description for failure.
  19. /// </summary>
  20. public string Description { get; private set; }
  21. /// <summary>
  22. /// Gets message language.
  23. /// </summary>
  24. public string Language { get; private set; }
  25. /// <summary>
  26. /// Initializes a new instance of the <see cref="ChannelOpenFailureMessage"/> class.
  27. /// </summary>
  28. public ChannelOpenFailureMessage()
  29. {
  30. }
  31. /// <summary>
  32. /// Initializes a new instance of the <see cref="ChannelOpenFailureMessage"/> class.
  33. /// </summary>
  34. /// <param name="localChannelNumber">The local channel number.</param>
  35. /// <param name="description">The description.</param>
  36. /// <param name="reasonCode">The reason code.</param>
  37. public ChannelOpenFailureMessage(uint localChannelNumber, string description, uint reasonCode)
  38. {
  39. LocalChannelNumber = localChannelNumber;
  40. Description = description;
  41. ReasonCode = reasonCode;
  42. }
  43. /// <summary>
  44. /// Initializes a new instance of the <see cref="ChannelOpenFailureMessage"/> class.
  45. /// </summary>
  46. /// <param name="localChannelNumber">The local channel number.</param>
  47. /// <param name="description">The description.</param>
  48. /// <param name="reasonCode">The reason code.</param>
  49. /// <param name="language">The language (RFC3066).</param>
  50. public ChannelOpenFailureMessage(uint localChannelNumber, string description, uint reasonCode, string language)
  51. {
  52. LocalChannelNumber = localChannelNumber;
  53. Description = description;
  54. ReasonCode = reasonCode;
  55. Language = language;
  56. }
  57. /// <summary>
  58. /// Called when type specific data need to be loaded.
  59. /// </summary>
  60. protected override void LoadData()
  61. {
  62. base.LoadData();
  63. ReasonCode = ReadUInt32();
  64. Description = ReadString();
  65. Language = ReadString();
  66. }
  67. /// <summary>
  68. /// Called when type specific data need to be saved.
  69. /// </summary>
  70. protected override void SaveData()
  71. {
  72. base.SaveData();
  73. Write(ReasonCode);
  74. Write(Description ?? string.Empty);
  75. Write(Language ?? "en");
  76. }
  77. }
  78. }