private void setAttributes(LocalDestFile f, int perms, String tMsg) throws IOException { f.setPermissions(perms); if (tMsg != null) { List<String> tMsgParts = tokenize(tMsg, 4, false); // e.g. T<mtime> 0 <atime> 0 f.setLastModifiedTime(parseLong(tMsgParts.get(0).substring(1), "last modified time")); f.setLastAccessedTime(parseLong(tMsgParts.get(2), "last access time")); } }
private void processDirectory(TransferListener listener, String dMsg, String tMsg, LocalDestFile f) throws IOException { final List<String> dMsgParts = tokenize(dMsg, 3, true); // D<perms> 0 <dirname> final long length = parseLong(dMsgParts.get(1), "dir length"); final String dirname = dMsgParts.get(2); if (length != 0) { throw new IOException("Remote SCP command sent strange directory length: " + length); } final TransferListener dirListener = listener.directory(dirname); { f = f.getTargetDirectory(dirname); engine.signal("ACK: D"); do { } while (!process(dirListener, null, engine.readMessage(), f)); setAttributes(f, parsePermissions(dMsgParts.get(0)), tMsg); engine.signal("ACK: E"); } }
private void processFile(TransferListener listener, String cMsg, String tMsg, LocalDestFile f) throws IOException { final List<String> cMsgParts = tokenize(cMsg, 3, true); // C<perms> <size> <filename> final long length = parseLong(cMsgParts.get(1), "length"); final String filename = cMsgParts.get(2); { f = f.getTargetFile(filename); engine.signal("Remote can start transfer"); final OutputStream dest = f.getOutputStream(); try { engine.transferFromRemote(listener.file(filename, length), dest, length); } finally { IOUtils.closeQuietly(dest); } engine.check("Remote agrees transfer done"); setAttributes(f, parsePermissions(cMsgParts.get(0)), tMsg); engine.signal("Transfer done"); } }
private void setAttributes(LocalDestFile f, int perms, String tMsg) throws IOException { f.setPermissions(perms); if (tMsg != null) { List<String> tMsgParts = tokenize(tMsg, 4, false); // e.g. T<mtime> 0 <atime> 0 f.setLastModifiedTime(parseLong(tMsgParts.get(0).substring(1), "last modified time")); f.setLastAccessedTime(parseLong(tMsgParts.get(2), "last access time")); } }
private void setAttributes(LocalDestFile f, int perms, String tMsg) throws IOException { f.setPermissions(perms); if (tMsg != null) { List<String> tMsgParts = tokenize(tMsg, 4, false); // e.g. T<mtime> 0 <atime> 0 f.setLastModifiedTime(parseLong(tMsgParts.get(0).substring(1), "last modified time")); f.setLastAccessedTime(parseLong(tMsgParts.get(2), "last access time")); } }
private void processDirectory(TransferListener listener, String dMsg, String tMsg, LocalDestFile f) throws IOException { final List<String> dMsgParts = tokenize(dMsg, 3, true); // D<perms> 0 <dirname> final long length = parseLong(dMsgParts.get(1), "dir length"); final String dirname = dMsgParts.get(2); if (length != 0) throw new IOException("Remote SCP command sent strange directory length: " + length); final TransferListener dirListener = listener.directory(dirname); { f = f.getTargetDirectory(dirname); engine.signal("ACK: D"); do { } while (!process(dirListener, null, engine.readMessage(), f)); setAttributes(f, parsePermissions(dMsgParts.get(0)), tMsg); engine.signal("ACK: E"); } }
private void processDirectory(TransferListener listener, String dMsg, String tMsg, LocalDestFile f) throws IOException { final List<String> dMsgParts = tokenize(dMsg, 3, true); // D<perms> 0 <dirname> final long length = parseLong(dMsgParts.get(1), "dir length"); final String dirname = dMsgParts.get(2); if (length != 0) { throw new IOException("Remote SCP command sent strange directory length: " + length); } final TransferListener dirListener = listener.directory(dirname); { f = f.getTargetDirectory(dirname); engine.signal("ACK: D"); do { } while (!process(dirListener, null, engine.readMessage(), f)); setAttributes(f, parsePermissions(dMsgParts.get(0)), tMsg); engine.signal("ACK: E"); } }
private void processFile(TransferListener listener, String cMsg, String tMsg, LocalDestFile f) throws IOException { final List<String> cMsgParts = tokenize(cMsg, 3, true); // C<perms> <size> <filename> final long length = parseLong(cMsgParts.get(1), "length"); final String filename = cMsgParts.get(2); { f = f.getTargetFile(filename); engine.signal("Remote can start transfer"); final OutputStream dest = f.getOutputStream(); try { engine.transferFromRemote(listener.file(filename, length), dest, length); } finally { IOUtils.closeQuietly(dest); } engine.check("Remote agrees transfer done"); setAttributes(f, parsePermissions(cMsgParts.get(0)), tMsg); engine.signal("Transfer done"); } }
private void processFile(TransferListener listener, String cMsg, String tMsg, LocalDestFile f) throws IOException { final List<String> cMsgParts = tokenize(cMsg, 3, true); // C<perms> <size> <filename> final long length = parseLong(cMsgParts.get(1), "length"); final String filename = cMsgParts.get(2); { f = f.getTargetFile(filename); engine.signal("Remote can start transfer"); final OutputStream dest = f.getOutputStream(); try { engine.transferFromRemote(listener.file(filename, length), dest, length); } finally { IOUtils.closeQuietly(dest); } engine.check("Remote agrees transfer done"); setAttributes(f, parsePermissions(cMsgParts.get(0)), tMsg); engine.signal("Transfer done"); } }