public void GetBytes() { var request = new SftpFStatRequest(_protocolVersion, _requestId, _handle, null, null); var bytes = request.GetBytes(); var expectedBytesLength = 0; expectedBytesLength += 4; // Length expectedBytesLength += 1; // Type expectedBytesLength += 4; // RequestId expectedBytesLength += 4; // Handle length expectedBytesLength += _handle.Length; // Handle Assert.AreEqual(expectedBytesLength, bytes.Length); var sshDataStream = new SshDataStream(bytes); Assert.AreEqual((uint) bytes.Length - 4, sshDataStream.ReadUInt32()); Assert.AreEqual((byte) SftpMessageTypes.FStat, sshDataStream.ReadByte()); Assert.AreEqual(_requestId, sshDataStream.ReadUInt32()); Assert.AreEqual((uint) _handle.Length, sshDataStream.ReadUInt32()); var actualHandle = new byte[_handle.Length]; sshDataStream.Read(actualHandle, 0, actualHandle.Length); Assert.IsTrue(_handle.SequenceEqual(actualHandle)); Assert.IsTrue(sshDataStream.IsEndOfData); }
public void Constructor() { var request = new SftpFStatRequest(_protocolVersion, _requestId, _handle, null, null); Assert.AreSame(_handle, request.Handle); Assert.AreEqual(_protocolVersion, request.ProtocolVersion); Assert.AreEqual(_requestId, request.RequestId); Assert.AreEqual(SftpMessageTypes.FStat, request.SftpMessageType); }
public void Complete_SftpStatusResponse() { var statusActionInvocations = new List<SftpStatusResponse>(); var attrsActionInvocations = new List<SftpAttrsResponse>(); Action<SftpStatusResponse> statusAction = statusActionInvocations.Add; Action<SftpAttrsResponse> attrsAction = attrsActionInvocations.Add; var statusResponse = new SftpStatusResponse(_protocolVersion); var request = new SftpFStatRequest(_protocolVersion, _requestId, _handle, attrsAction, statusAction); request.Complete(statusResponse); Assert.AreEqual(1, statusActionInvocations.Count); Assert.AreSame(statusResponse, statusActionInvocations[0]); Assert.AreEqual(0, attrsActionInvocations.Count); }
/// <summary> /// Performs SSH_FXP_FSTAT request. /// </summary> /// <param name="handle">The handle.</param> /// <param name="nullOnError">if set to <c>true</c> returns null instead of throwing an exception.</param> /// <returns> /// File attributes /// </returns> internal SftpFileAttributes RequestFStat(byte[] handle, bool nullOnError = false) { SshException exception = null; SftpFileAttributes attributes = null; using (var wait = new AutoResetEvent(false)) { var request = new SftpFStatRequest(this.ProtocolVersion, this.NextRequestId, handle, (response) => { attributes = response.Attributes; wait.Set(); }, (response) => { exception = this.GetSftpException(response); wait.Set(); }); this.SendRequest(request); this.WaitHandle(wait, this._operationTimeout); } if (exception != null) { throw exception; } return attributes; }
/// <summary> /// Performs SSH_FXP_FSTAT request. /// </summary> /// <param name="handle">The handle.</param> /// <returns> /// File attributes /// </returns> public SftpFileAttributes RequestFStat(byte[] handle) { SshException exception = null; SftpFileAttributes attributes = null; using (var wait = new AutoResetEvent(false)) { var request = new SftpFStatRequest(ProtocolVersion, NextRequestId, handle, response => { attributes = response.Attributes; wait.Set(); }, response => { exception = GetSftpException(response); wait.Set(); }); SendRequest(request); WaitOnHandle(wait, OperationTimeout); } if (exception != null) { throw exception; } return attributes; }
/// <summary> /// Performs SSH_FXP_FSTAT request. /// </summary> /// <param name="handle">The handle.</param> /// <param name="nullOnError">if set to <c>true</c> returns null instead of throwing an exception.</param> /// <returns> /// File attributes /// </returns> public SftpFileAttributes RequestFStat(byte[] handle, bool nullOnError = false) { SftpFileAttributes attributes = null; using (var wait = new AutoResetEvent(false)) { var request = new SftpFStatRequest(this.NextRequestId, handle, (response) => { attributes = response.Attributes; wait.Set(); }, (response) => { ThrowSftpException(response); }); this.SendRequest(request); this.WaitHandle(wait, this._operationTimeout); } return attributes; }