public void Constructor() { var target = new SftpDataResponse(_protocolVersion); Assert.IsNull(target.Data); Assert.AreEqual(_protocolVersion, target.ProtocolVersion); Assert.AreEqual((uint)0, target.ResponseId); Assert.AreEqual(SftpMessageTypes.Data, target.SftpMessageType); }
private static SftpMessage Load(uint protocolVersion, byte[] data, SftpMessageTypes messageType, Encoding encoding) { SftpMessage message; switch (messageType) { case SftpMessageTypes.Version: message = new SftpVersionResponse(); break; case SftpMessageTypes.Status: message = new SftpStatusResponse(protocolVersion); break; case SftpMessageTypes.Data: message = new SftpDataResponse(protocolVersion); break; case SftpMessageTypes.Handle: message = new SftpHandleResponse(protocolVersion); break; case SftpMessageTypes.Name: message = new SftpNameResponse(protocolVersion, encoding); break; case SftpMessageTypes.Attrs: message = new SftpAttrsResponse(protocolVersion); break; case SftpMessageTypes.ExtendedReply: message = new SftpExtendedReplyResponse(protocolVersion); break; default: throw new NotSupportedException(string.Format(CultureInfo.CurrentCulture, "Message type '{0}' is not supported.", messageType)); } #if TUNING message.Load(data); #else message.LoadBytes(data); message.ResetReader(); message.LoadData(); #endif return(message); }
/// <summary> /// Performs SSH_FXP_READ request. /// </summary> /// <param name="handle">The handle.</param> /// <param name="offset">The offset.</param> /// <param name="length">The length.</param> /// <param name="readCompleted">Action for response</param> /// <returns>data array; null if EOF</returns> public bool RequestReadAsync(byte[] handle, UInt64 offset, UInt32 length, Action <SftpDataResponse> readCompleted) { var request = new SftpReadRequest(this.ProtocolVersion, this.NextRequestId, handle, offset, length, (response) =>//data { readCompleted(response); }, (response) =>//status, eof, no data in area { SftpDataResponse dataResponse = new SftpDataResponse(response.ProtocolVersion); //dataResponse.Data = null; readCompleted(dataResponse); }); this.SendRequest(request); return(true); }
public SftpMessage Create(uint protocolVersion, byte messageType, Encoding encoding) { var sftpMessageType = (SftpMessageTypes)messageType; SftpMessage message; switch (sftpMessageType) { case SftpMessageTypes.Version: message = new SftpVersionResponse(); break; case SftpMessageTypes.Status: message = new SftpStatusResponse(protocolVersion); break; case SftpMessageTypes.Data: message = new SftpDataResponse(protocolVersion); break; case SftpMessageTypes.Handle: message = new SftpHandleResponse(protocolVersion); break; case SftpMessageTypes.Name: message = new SftpNameResponse(protocolVersion, encoding); break; case SftpMessageTypes.Attrs: message = new SftpAttrsResponse(protocolVersion); break; case SftpMessageTypes.ExtendedReply: message = new SftpExtendedReplyResponse(protocolVersion); break; default: throw new NotSupportedException(string.Format(CultureInfo.CurrentCulture, "Message type '{0}' is not supported.", sftpMessageType)); } return(message); }
public void Load() { var target = new SftpDataResponse(_protocolVersion); var sshDataStream = new SshDataStream(4 + _data.Length); sshDataStream.Write(_responseId); sshDataStream.Write((uint)_data.Length); sshDataStream.Write(_data, 0, _data.Length); var sshData = sshDataStream.ToArray(); target.Load(sshData); Assert.IsNotNull(target.Data); Assert.IsTrue(target.Data.SequenceEqual(_data)); Assert.AreEqual(_protocolVersion, target.ProtocolVersion); Assert.AreEqual(_responseId, target.ResponseId); Assert.AreEqual(SftpMessageTypes.Data, target.SftpMessageType); }
public void Load() { var target = new SftpDataResponse(_protocolVersion); var sshDataStream = new SshDataStream(4 + 1 + 4 + _data.Length); sshDataStream.Position = 4; // skip 4 bytes for SSH packet length sshDataStream.WriteByte((byte)SftpMessageTypes.Attrs); sshDataStream.Write(_responseId); sshDataStream.Write((uint)_data.Length); sshDataStream.Write(_data, 0, _data.Length); target.Load(sshDataStream.ToArray()); Assert.IsNotNull(target.Data); Assert.IsTrue(target.Data.SequenceEqual(_data)); Assert.AreEqual(_protocolVersion, target.ProtocolVersion); Assert.AreEqual(_responseId, target.ResponseId); Assert.AreEqual(SftpMessageTypes.Data, target.SftpMessageType); }
public void Complete_SftpDataResponse() { var statusActionInvocations = new List <SftpStatusResponse>(); var dataActionInvocations = new List <SftpDataResponse>(); Action <SftpStatusResponse> statusAction = statusActionInvocations.Add; Action <SftpDataResponse> dataAction = dataActionInvocations.Add; var dataResponse = new SftpDataResponse(_protocolVersion); var request = new SftpReadRequest( _protocolVersion, _requestId, _handle, _offset, _length, dataAction, statusAction); request.Complete(dataResponse); Assert.AreEqual(0, statusActionInvocations.Count); Assert.AreEqual(1, dataActionInvocations.Count); Assert.AreSame(dataResponse, dataActionInvocations[0]); }