| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293 |
- using System;
- using System.Globalization;
- using Renci.SshNet.Abstractions;
- using Renci.SshNet.Common;
- namespace Renci.SshNet.Messages.Transport
- {
- /// <summary>
- /// Represents SSH_MSG_IGNORE message.
- /// </summary>
- [Message("SSH_MSG_IGNORE", MessageNumber)]
- public class IgnoreMessage : Message
- {
- internal const byte MessageNumber = 2;
- /// <summary>
- /// Gets ignore message data if any.
- /// </summary>
- public byte[] Data { get; private set; }
- /// <summary>
- /// Initializes a new instance of the <see cref="IgnoreMessage"/> class
- /// </summary>
- public IgnoreMessage()
- {
- Data = Array<byte>.Empty;
- }
- /// <summary>
- /// Gets the size of the message in bytes.
- /// </summary>
- /// <value>
- /// The size of the messages in bytes.
- /// </value>
- protected override int BufferCapacity
- {
- get
- {
- var capacity = base.BufferCapacity;
- capacity += 4; // Data length
- capacity += Data.Length; // Data
- return capacity;
- }
- }
- /// <summary>
- /// Initializes a new instance of the <see cref="IgnoreMessage"/> class.
- /// </summary>
- /// <param name="data">The data.</param>
- public IgnoreMessage(byte[] data)
- {
- if (data == null)
- throw new ArgumentNullException("data");
- Data = data;
- }
- /// <summary>
- /// Called when type specific data need to be loaded.
- /// </summary>
- protected override void LoadData()
- {
- var dataLength = ReadUInt32();
- if (dataLength > int.MaxValue)
- {
- throw new NotSupportedException(string.Format(CultureInfo.CurrentCulture, "Data longer than {0} is not supported.", int.MaxValue));
- }
- if (dataLength > (DataStream.Length - DataStream.Position))
- {
- DiagnosticAbstraction.Log("SSH_MSG_IGNORE: Length exceeds data bytes, data ignored.");
- Data = Array<byte>.Empty;
- }
- else
- {
- Data = ReadBytes((int) dataLength);
- }
- }
- /// <summary>
- /// Called when type specific data need to be saved.
- /// </summary>
- protected override void SaveData()
- {
- WriteBinaryString(Data);
- }
- internal override void Process(Session session)
- {
- session.OnIgnoreReceived(this);
- }
- }
- }
|