SftpRequest
using Renci.SshNet.Sftp.Responses;
using System;
namespace Renci.SshNet.Sftp.Requests
{
internal abstract class SftpRequest : SftpMessage
{
private readonly Action<SftpStatusResponse> _statusAction;
public uint RequestId { get; set; }
public uint ProtocolVersion { get; set; }
protected override int BufferCapacity => base.BufferCapacity + 4;
protected SftpRequest(uint protocolVersion, uint requestId, Action<SftpStatusResponse> statusAction)
{
RequestId = requestId;
ProtocolVersion = protocolVersion;
_statusAction = statusAction;
}
public virtual void Complete(SftpResponse response)
{
SftpStatusResponse sftpStatusResponse = response as SftpStatusResponse;
if (sftpStatusResponse != null) {
_statusAction(sftpStatusResponse);
return;
}
throw new InvalidOperationException($"""{response.GetType().get_Name()}""");
}
protected override void LoadData()
{
throw new InvalidOperationException("Request cannot be saved.");
}
protected override void SaveData()
{
base.SaveData();
Write(RequestId);
}
}
}