You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
90 lines
2.6 KiB
C#
90 lines
2.6 KiB
C#
namespace Renci.SshNet.Messages.Connection
|
|
{
|
|
/// <summary>
|
|
/// Represents SSH_MSG_GLOBAL_REQUEST message.
|
|
/// </summary>
|
|
[Message("SSH_MSG_GLOBAL_REQUEST", 80)]
|
|
public class GlobalRequestMessage : Message
|
|
{
|
|
private byte[] _requestName;
|
|
|
|
/// <summary>
|
|
/// Gets the name of the request.
|
|
/// </summary>
|
|
/// <value>
|
|
/// The name of the request.
|
|
/// </value>
|
|
public string RequestName
|
|
{
|
|
get { return Ascii.GetString(_requestName, 0, _requestName.Length); }
|
|
}
|
|
|
|
/// <summary>
|
|
/// Gets a value indicating whether message reply should be sent..
|
|
/// </summary>
|
|
/// <value>
|
|
/// <c>true</c> if message reply should be sent; otherwise, <c>false</c>.
|
|
/// </value>
|
|
public bool WantReply { get; private set; }
|
|
|
|
/// <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; // RequestName length
|
|
capacity += _requestName.Length; // RequestName
|
|
capacity += 1; // WantReply
|
|
return capacity;
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// Initializes a new instance of the <see cref="GlobalRequestMessage"/> class.
|
|
/// </summary>
|
|
public GlobalRequestMessage()
|
|
{
|
|
}
|
|
|
|
/// <summary>
|
|
/// Initializes a new instance of the <see cref="GlobalRequestMessage"/> class.
|
|
/// </summary>
|
|
/// <param name="requestName">Name of the request.</param>
|
|
/// <param name="wantReply">if set to <c>true</c> [want reply].</param>
|
|
internal GlobalRequestMessage(byte[] requestName, bool wantReply)
|
|
{
|
|
_requestName = requestName;
|
|
WantReply = wantReply;
|
|
}
|
|
|
|
/// <summary>
|
|
/// Called when type specific data need to be loaded.
|
|
/// </summary>
|
|
protected override void LoadData()
|
|
{
|
|
_requestName = ReadBinary();
|
|
WantReply = ReadBoolean();
|
|
}
|
|
|
|
/// <summary>
|
|
/// Called when type specific data need to be saved.
|
|
/// </summary>
|
|
protected override void SaveData()
|
|
{
|
|
WriteBinaryString(_requestName);
|
|
Write(WantReply);
|
|
}
|
|
|
|
internal override void Process(Session session)
|
|
{
|
|
session.OnGlobalRequestReceived(this);
|
|
}
|
|
}
|
|
}
|