public override void start()
{ //throws JSchException{
try
{
PipedOutputStream pos = new PipedOutputStream();
io.setOutputStream(pos);
PipedInputStream pis = new MyPipedInputStream(pos, 32 * 1024);
io.setInputStream(pis);
Request request = new RequestSftp();
request.request(session, this);
/*
* System.err.println("lmpsize: "+lmpsize);
* System.err.println("lwsize: "+lwsize);
* System.err.println("rmpsize: "+rmpsize);
* System.err.println("rwsize: "+rwsize);
*/
buf = new Buffer(rmpsize);
packet = new Packet(buf);
int i = 0;
int length;
int type;
byte[] str;
// send SSH_FXP_INIT
sendINIT();
// receive SSH_FXP_VERSION
Header _header = new Header();
_header = ReadHeader(buf, _header);
length = _header.length;
if (length > MAX_MSG_LENGTH)
{
throw new SftpException(SSH_FX_FAILURE, "Received message is too long: " + length);
}
type = _header.type; // 2 -> SSH_FXP_VERSION
ServerVersion = _header.rid;
skip(length);
//System.err.println("SFTP protocol server-version="+server_version);
//System.Console.WriteLine("server_version="+server_version+", type="+type+", length="+length+", i="+i);
// send SSH_FXP_REALPATH
sendREALPATH(".");
// receive SSH_FXP_NAME
_header = ReadHeader(buf, _header);
length = _header.length;
type = _header.type; // 104 -> SSH_FXP_NAME
buf.Rewind();
fill(buf.buffer, 0, length);
i = buf.ReadInt(); // count
//System.Console.WriteLine("type="+type+", length="+length+", i="+i);
str = buf.ReadString(); // filename
//System.Console.WriteLine("str.length="+str.Length);
home = cwd = Encoding.UTF8.GetString(str);
str = buf.ReadString(); // logname
// SftpATTRS.getATTR(buf); // attrs
lcwd = System.IO.Path.GetFullPath(".");
}
catch (Exception e)
{
//System.out.println(e);
//System.Console.WriteLine(e);
if (e is JSchException)
{
throw (JSchException)e;
}
throw new JSchException(e.ToString());
}
}