public virtual java.io.InputStream getInputStream() { PipedInputStream stream = new ChannelPipedInputStream( 32 * 1024 // this value should be customizable. ); m_io.setOutputStream(new PassiveOutputStream(stream), false); return stream; }
public override void start() { try { PipedOutputStream pos = new PipedOutputStream(); m_io.setOutputStream(pos); PipedInputStream pis = new ChannelPipedInputStream(pos, 32 * 1024); m_io.setInputStream(pis); Request request = new RequestSftp(); request.request(m_session, this); m_buffer = new Buffer(m_rmpsize); m_packet = new Packet(m_buffer); int i = 0; int length; int type; byte[] str; // send SSH_FXP_INIT sendINIT(); // receive SSH_FXP_VERSION Header header = new Header(); header = fillHeader(m_buffer, header); length = header.Length; if (length > MAX_MSG_LENGTH) throw new SftpException(ChannelSftpResult.SSH_FX_FAILURE, "Received message is too long: " + length); type = header.HeaderType; // 2 -> SSH_FXP_VERSION m_server_version = header.RID; skip(length); // send SSH_FXP_REALPATH sendREALPATH(Util.getBytesUTF8(".")); // receive SSH_FXP_NAME header = fillHeader(m_buffer, header); length = header.Length; type = header.HeaderType; // 104 -> SSH_FXP_NAME m_buffer.rewind(); fill(m_buffer.m_buffer, 0, length); i = m_buffer.getInt(); // count str = m_buffer.getString(); // filename m_home = m_cwd = Util.getStringUTF8(str); str = m_buffer.getString(); // logname // SftpATTRS.getATTR(buf); // attrs m_lcwd = new File(".").CanonicalPath; } catch (Exception e) { if (e is JSchException) throw (JSchException)e; throw new JSchException(e.ToString()); } }