<PackageReference Include="SSH.NET" Version="2016.0.0" />

SftpRequest

abstract class SftpRequest : SftpMessage
using Renci.SshNet.Sftp.Responses; using System; namespace Renci.SshNet.Sftp.Requests { internal abstract class SftpRequest : SftpMessage { private readonly Action<SftpStatusResponse> _statusAction; private Action<SftpAttrsResponse> _attrsAction; private Action<SftpDataResponse> _dataAction; private Action<SftpExtendedReplyResponse> _extendedReplyAction; private Action<SftpHandleResponse> _handleAction; private Action<SftpNameResponse> _nameAction; 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 void Complete(SftpResponse response) { if (response is SftpStatusResponse) _statusAction(response as SftpStatusResponse); else if (response is SftpAttrsResponse) { _attrsAction(response as SftpAttrsResponse); } else if (response is SftpDataResponse) { _dataAction(response as SftpDataResponse); } else if (response is SftpExtendedReplyResponse) { _extendedReplyAction(response as SftpExtendedReplyResponse); } else if (response is SftpHandleResponse) { _handleAction(response as SftpHandleResponse); } else { if (!(response is SftpNameResponse)) throw new InvalidOperationException($"""{response.GetType().get_Name()}"""); _nameAction(response as SftpNameResponse); } } protected void SetAction(Action<SftpAttrsResponse> action) { _attrsAction = action; } protected void SetAction(Action<SftpDataResponse> action) { _dataAction = action; } protected void SetAction(Action<SftpExtendedReplyResponse> action) { _extendedReplyAction = action; } protected void SetAction(Action<SftpHandleResponse> action) { _handleAction = action; } protected void SetAction(Action<SftpNameResponse> action) { _nameAction = action; } protected override void LoadData() { throw new InvalidOperationException("Request cannot be saved."); } protected override void SaveData() { base.SaveData(); Write(RequestId); } } }