| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183 | using Renci.SshNet.Sftp;using Renci.SshNet.Sftp.Responses;namespace Renci.SshNet.Tests.Classes.Sftp{    internal sealed class SftpStatVfsResponseBuilder    {        private uint _protocolVersion;        private uint _responseId;        private ulong _bsize;        private ulong _frsize;        private ulong _blocks;        private ulong _bfree;        private ulong _bavail;        private ulong _files;        private ulong _ffree;        private ulong _favail;        private ulong _sid;        private ulong _flag;        private ulong _namemax;        public SftpStatVfsResponseBuilder WithProtocolVersion(uint protocolVersion)        {            _protocolVersion = protocolVersion;            return this;        }        public SftpStatVfsResponseBuilder WithResponseId(uint responseId)        {            _responseId = responseId;            return this;        }        public SftpStatVfsResponseBuilder WithBSize(ulong bsize)        {            _bsize = bsize;            return this;        }        public SftpStatVfsResponseBuilder WithFrSize(ulong frsize)        {            _frsize = frsize;            return this;        }        public SftpStatVfsResponseBuilder WithBlocks(ulong blocks)        {            _blocks = blocks;            return this;        }        public SftpStatVfsResponseBuilder WithBFree(ulong bfree)        {            _bfree = bfree;            return this;        }        public SftpStatVfsResponseBuilder WithBAvail(ulong bavail)        {            _bavail = bavail;            return this;        }        public SftpStatVfsResponseBuilder WithFiles(ulong files)        {            _files = files;            return this;        }        public SftpStatVfsResponseBuilder WithFFree(ulong ffree)        {            _ffree = ffree;            return this;        }        public SftpStatVfsResponseBuilder WithFAvail(ulong favail)        {            _favail = favail;            return this;        }        public SftpStatVfsResponseBuilder WithSid(ulong sid)        {            _sid = sid;            return this;        }        public SftpStatVfsResponseBuilder WithIsReadOnly(bool isReadOnly)        {            if (isReadOnly)            {                _flag &= SftpFileSytemInformation.SSH_FXE_STATVFS_ST_RDONLY;            }            else            {                _flag |= SftpFileSytemInformation.SSH_FXE_STATVFS_ST_RDONLY;            }            return this;        }        public SftpStatVfsResponseBuilder WithSupportsSetUid(bool supportsSetUid)        {            if (supportsSetUid)            {                _flag |= SftpFileSytemInformation.SSH_FXE_STATVFS_ST_NOSUID;            }            else            {                _flag &= SftpFileSytemInformation.SSH_FXE_STATVFS_ST_NOSUID;            }            return this;        }        public SftpStatVfsResponseBuilder WithNameMax(ulong nameMax)        {            _namemax = nameMax;            return this;        }        public StatVfsResponse Build()        {            var fileSystemInfo = new SftpFileSytemInformation(_bsize,                                                              _frsize,                                                              _blocks,                                                              _bfree,                                                              _bavail,                                                              _files,                                                              _ffree,                                                              _favail,                                                              _sid,                                                              _flag,                                                              _namemax);            return new StatVfsResponse(_protocolVersion)            {                ResponseId = _responseId,                Information = fileSystemInfo            };        }    }    internal sealed class StatVfsResponse : SftpResponse    {        public override SftpMessageTypes SftpMessageType        {            get { return SftpMessageTypes.ExtendedReply; }        }        public SftpFileSytemInformation Information { get; set; }        public StatVfsResponse(uint protocolVersion)            : base(protocolVersion)        {        }        protected override void LoadData()        {            base.LoadData();            Information = new SftpFileSytemInformation(ReadUInt64(), // FileSystemBlockSize                                                       ReadUInt64(), // BlockSize                                                       ReadUInt64(), // TotalBlocks                                                       ReadUInt64(), // FreeBlocks                                                       ReadUInt64(), // AvailableBlocks                                                       ReadUInt64(), // TotalNodes                                                       ReadUInt64(), // FreeNodes                                                       ReadUInt64(), // AvailableNodes                                                       ReadUInt64(), // Sid                                                       ReadUInt64(), // Flags                                                       ReadUInt64()  // MaxNameLenght                                                       );        }        protected override void SaveData()        {            base.SaveData();            Information.SaveData(DataStream);        }    }}
 |