currentRawPath = toDownloadRawPaths.removeFirst();
List<String> path = toDownloadSplitPaths.removeFirst();
String file = path.get(path.size() - 1);
if (file.isEmpty()) {
new SocketReady(queue.getSelector(), allocator).connect(dataAddress, new ReadyConnection() {
private final LineReader lineReader = new LineReader();
@Override
public void handle(Address address, ByteBuffer buffer) {
if (closed) {
return;
}
if (listCallback == null) {
return;
}
while (true) {
String name = lineReader.handle(buffer);
if (name == null) {
break;
}
if (name.equals(".")) {
continue;
}
if (name.equals("..")) {
continue;
}
list.add(name);
}
}
@Override
public void failed(IOException e) {
if (closed) {
return;
}
if (listCallback == null) {
return;
}
LOGGER.debug("Connection failed: {}", dataAddress, e);
listCallback.failed(e);
}
@Override
public void connected(FailableCloseableByteBufferHandler write) {
data = write;
}
@Override
public void close() {
if (closed) {
return;
}
dataFinished = true;
if (retrFinished) {
if (listCallback != null) {
listCallback.handle(list);
}
dataFinished = false;
retrFinished = false;
}
}
});
LOGGER.debug("Listing: {}", currentRawPath);
writeLine("TYPE A");
state = State.TYPE_A;
} else {
new SocketReady(queue.getSelector(), allocator).connect(dataAddress, new ReadyConnection() {
@Override
public void handle(Address address, ByteBuffer buffer) {
if (closed) {
return;
}