ISftpSession
Represents an SFTP session.
            
                using Renci.SshNet.Sftp.Responses;
using System;
using System.Collections.Generic;
using System.Threading;
using System.Threading.Tasks;
namespace Renci.SshNet.Sftp
{
    internal interface ISftpSession : ISubsystemSession, IDisposable
    {
        uint ProtocolVersion { get; }
        string WorkingDirectory { get; }
        void ChangeDirectory(string path);
        Task ChangeDirectoryAsync(string path, CancellationToken cancellationToken);
        string GetCanonicalPath(string path);
        Task<string> GetCanonicalPathAsync(string path, CancellationToken cancellationToken);
        SftpFileAttributes RequestFStat(byte[] handle);
        Task<SftpFileAttributes> RequestFStatAsync(byte[] handle, CancellationToken cancellationToken);
        SftpFileAttributes RequestStat(string path);
        SftpFileAttributes RequestLStat(string path);
        Task<SftpFileAttributes> RequestLStatAsync(string path, CancellationToken cancellationToken);
        void RequestMkDir(string path);
        Task RequestMkDirAsync(string path, CancellationToken cancellationToken);
        byte[] RequestOpen(string path, Flags flags);
        Task<byte[]> RequestOpenAsync(string path, Flags flags, CancellationToken cancellationToken);
        byte[] RequestOpenDir(string path);
        Task<byte[]> RequestOpenDirAsync(string path, CancellationToken cancellationToken);
        void RequestPosixRename(string oldPath, string newPath);
        byte[] RequestRead(byte[] handle, ulong offset, uint length);
        Task<byte[]> RequestReadAsync(byte[] handle, ulong offset, uint length, CancellationToken cancellationToken);
        KeyValuePair<string, SftpFileAttributes>[] RequestReadDir(byte[] handle);
        Task<KeyValuePair<string, SftpFileAttributes>[]> RequestReadDirAsync(byte[] handle, CancellationToken cancellationToken);
        void RequestRemove(string path);
        Task RequestRemoveAsync(string path, CancellationToken cancellationToken);
        void RequestRename(string oldPath, string newPath);
        Task RequestRenameAsync(string oldPath, string newPath, CancellationToken cancellationToken);
        void RequestRmDir(string path);
        Task RequestRmDirAsync(string path, CancellationToken cancellationToken);
        void RequestSetStat(string path, SftpFileAttributes attributes);
        SftpFileSystemInformation RequestStatVfs(string path);
        Task<SftpFileSystemInformation> RequestStatVfsAsync(string path, CancellationToken cancellationToken);
        void RequestSymLink(string linkpath, string targetpath);
        void RequestFSetStat(byte[] handle, SftpFileAttributes attributes);
        void RequestWrite(byte[] handle, ulong serverOffset, byte[] data, int offset, int length, AutoResetEvent wait, Action<SftpStatusResponse> writeCompleted = null);
        Task RequestWriteAsync(byte[] handle, ulong serverOffset, byte[] data, int offset, int length, CancellationToken cancellationToken);
        void RequestClose(byte[] handle);
        Task RequestCloseAsync(byte[] handle, CancellationToken cancellationToken);
        uint CalculateOptimalReadLength(uint bufferSize);
        uint CalculateOptimalWriteLength(uint bufferSize, byte[] handle);
    }
}