DisconnectMessage.cs 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. using System;
  2. using System.Diagnostics.Contracts;
  3. using System.Text;
  4. namespace FxSsh.Messages
  5. {
  6. [Message("SSH_MSG_DISCONNECT", MessageNumber)]
  7. public class DisconnectMessage : Message
  8. {
  9. private const byte MessageNumber = 1;
  10. public DisconnectMessage()
  11. {
  12. }
  13. public DisconnectMessage(DisconnectReason reasonCode, string description = "", string language = "en")
  14. {
  15. Contract.Requires(description != null);
  16. Contract.Requires(language != null);
  17. ReasonCode = reasonCode;
  18. Description = description;
  19. Language = language;
  20. }
  21. public DisconnectReason ReasonCode { get; private set; }
  22. public string Description { get; private set; }
  23. public string Language { get; private set; }
  24. public override byte MessageType { get { return MessageNumber; } }
  25. protected override void OnLoad(SshDataWorker reader)
  26. {
  27. ReasonCode = (DisconnectReason)reader.ReadUInt32();
  28. Description = reader.ReadString(Encoding.UTF8);
  29. if (reader.DataAvailable >= 4)
  30. Language = reader.ReadString(Encoding.UTF8);
  31. }
  32. protected override void OnGetPacket(SshDataWorker writer)
  33. {
  34. writer.Write((uint)ReasonCode);
  35. writer.Write(Description, Encoding.UTF8);
  36. writer.Write(Language ?? "en", Encoding.UTF8);
  37. }
  38. }
  39. }