public void setCurrentTransferSrc(RemoteFileInfo srcFile) { currentTransfer = srcFile; currentTransferSrcPath = sourcePath + '/' + srcFile.Name; // Select expedition directory currentTransferDir = session.ListDirectory(currentTransferSrcPath); }
public RemoteDirectoryInfo ListDirectory(string path) { using (Logger.CreateCallstackAndLock()) { CheckOpened(); WriteCommand(string.Format(CultureInfo.InvariantCulture, "ls -- \"{0}\"", ArgumentEscape(IncludeTrailingSlash(path)))); RemoteDirectoryInfo result = new RemoteDirectoryInfo(); using (ElementLogReader groupReader = _reader.WaitForGroupAndCreateLogReader()) using (ElementLogReader lsReader = groupReader.WaitForNonEmptyElementAndCreateLogReader("ls", LogReadFlags.ThrowFailures)) { if (lsReader.TryWaitForNonEmptyElement("files", 0)) { using (ElementLogReader filesReader = lsReader.CreateLogReader()) { while (filesReader.TryWaitForNonEmptyElement("file", 0)) { RemoteFileInfo fileInfo = new RemoteFileInfo(); using (ElementLogReader fileReader = filesReader.CreateLogReader()) { while (fileReader.Read(0)) { string value; if (fileReader.GetEmptyElementValue("filename", out value)) { fileInfo.Name = value; } else { ReadFile(fileInfo, fileReader); } } result.AddFile(fileInfo); } } } groupReader.ReadToEnd(LogReadFlags.ThrowFailures); } else { // "files" not found, keep reading, we expect "failure" groupReader.ReadToEnd(LogReadFlags.ThrowFailures); // only if not "failure", throw "files" not found throw SessionLocalException.CreateElementNotFound(this, "files"); } } return result; } }