BannerMessage.cs 2.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889
  1. using System;
  2. namespace Renci.SshNet.Messages.Authentication
  3. {
  4. /// <summary>
  5. /// Represents SSH_MSG_USERAUTH_BANNER message.
  6. /// </summary>
  7. [Message("SSH_MSG_USERAUTH_BANNER", 53)]
  8. public class BannerMessage : Message
  9. {
  10. #if TUNING
  11. private byte[] _message;
  12. private byte[] _language;
  13. #endif
  14. /// <summary>
  15. /// Gets banner message.
  16. /// </summary>
  17. #if TUNING
  18. public string Message
  19. {
  20. get { return Utf8.GetString(_message); }
  21. }
  22. #else
  23. public string Message { get; private set; }
  24. #endif
  25. /// <summary>
  26. /// Gets banner language.
  27. /// </summary>
  28. #if TUNING
  29. public string Language
  30. {
  31. get { return Utf8.GetString(_language); }
  32. }
  33. #else
  34. public string Language { get; private set; }
  35. #endif
  36. #if TUNING
  37. /// <summary>
  38. /// Gets the size of the message in bytes.
  39. /// </summary>
  40. /// <value>
  41. /// The size of the messages in bytes.
  42. /// </value>
  43. protected override int BufferCapacity
  44. {
  45. get
  46. {
  47. var capacity = base.BufferCapacity;
  48. capacity += 4; // Message length
  49. capacity += _message.Length; // Message
  50. capacity += 4; // Language length
  51. capacity += _language.Length; // Language
  52. return capacity;
  53. }
  54. }
  55. #endif
  56. /// <summary>
  57. /// Called when type specific data need to be loaded.
  58. /// </summary>
  59. protected override void LoadData()
  60. {
  61. #if TUNING
  62. _message = ReadBinary();
  63. _language = ReadBinary();
  64. #else
  65. Message = ReadString();
  66. Language = ReadString();
  67. #endif
  68. }
  69. /// <summary>
  70. /// Called when type specific data need to be saved.
  71. /// </summary>
  72. protected override void SaveData()
  73. {
  74. #if TUNING
  75. WriteBinaryString(_message);
  76. WriteBinaryString(_language);
  77. #else
  78. Write(Message);
  79. Write(Language);
  80. #endif
  81. }
  82. }
  83. }