forked from j62/ctbrec
Use AtomicBoolen to indicate, if a download has finished
This commit is contained in:
parent
4dd99a6dd3
commit
16dfc07a8e
|
@ -21,6 +21,7 @@ import java.util.Locale;
|
|||
import java.util.Optional;
|
||||
import java.util.concurrent.ExecutionException;
|
||||
import java.util.concurrent.TimeUnit;
|
||||
import java.util.concurrent.atomic.AtomicBoolean;
|
||||
import java.util.regex.Pattern;
|
||||
|
||||
import javax.xml.bind.JAXBContext;
|
||||
|
@ -56,7 +57,7 @@ public class DashDownload extends AbstractDownload {
|
|||
private boolean audioInitLoaded = false;
|
||||
private BigInteger lastAudioTimestamp = BigInteger.ZERO;
|
||||
private BigInteger lastVideoTimestamp = BigInteger.ZERO;
|
||||
private transient Object downloadFinished = new Object();
|
||||
private transient AtomicBoolean downloadFinished = new AtomicBoolean(false);
|
||||
private transient HttpClient httpClient;
|
||||
private transient Config config;
|
||||
private Model model;
|
||||
|
@ -270,6 +271,7 @@ public class DashDownload extends AbstractDownload {
|
|||
} finally {
|
||||
running = false;
|
||||
endTime = Instant.now();
|
||||
downloadFinished.set(true);
|
||||
synchronized (downloadFinished) {
|
||||
downloadFinished.notifyAll();
|
||||
}
|
||||
|
@ -348,8 +350,8 @@ public class DashDownload extends AbstractDownload {
|
|||
if (running) {
|
||||
internalStop();
|
||||
try {
|
||||
while (running) {
|
||||
synchronized (downloadFinished) {
|
||||
while (!downloadFinished.get()) {
|
||||
downloadFinished.wait(TimeUnit.SECONDS.toMillis(1));
|
||||
}
|
||||
}
|
||||
|
|
|
@ -52,11 +52,11 @@ public abstract class AbstractHlsDownload extends AbstractDownload {
|
|||
private static final Logger LOG = LoggerFactory.getLogger(AbstractHlsDownload.class);
|
||||
private static int threadCounter = 0;
|
||||
|
||||
protected HttpClient client;
|
||||
protected transient HttpClient client;
|
||||
protected volatile boolean running = false;
|
||||
protected Model model = new UnknownModel();
|
||||
protected LinkedBlockingQueue<Runnable> downloadQueue = new LinkedBlockingQueue<>(50);
|
||||
protected ExecutorService downloadThreadPool = new ThreadPoolExecutor(5, 5, 2, TimeUnit.MINUTES, downloadQueue, createThreadFactory());
|
||||
protected transient LinkedBlockingQueue<Runnable> downloadQueue = new LinkedBlockingQueue<>(50);
|
||||
protected transient ExecutorService downloadThreadPool = new ThreadPoolExecutor(5, 5, 2, TimeUnit.MINUTES, downloadQueue, createThreadFactory());
|
||||
protected State state = State.UNKNOWN;
|
||||
private int playlistEmptyCount = 0;
|
||||
|
||||
|
|
|
@ -24,6 +24,7 @@ import java.util.concurrent.Callable;
|
|||
import java.util.concurrent.ExecutionException;
|
||||
import java.util.concurrent.RejectedExecutionException;
|
||||
import java.util.concurrent.TimeUnit;
|
||||
import java.util.concurrent.atomic.AtomicBoolean;
|
||||
import java.util.regex.Pattern;
|
||||
|
||||
import org.slf4j.Logger;
|
||||
|
@ -57,7 +58,7 @@ public class HlsDownload extends AbstractHlsDownload {
|
|||
|
||||
private int segmentCounter = 1;
|
||||
private NumberFormat nf = new DecimalFormat("000000");
|
||||
private transient Object downloadFinished = new Object();
|
||||
private transient AtomicBoolean downloadFinished = new AtomicBoolean(false);
|
||||
private ZonedDateTime splitRecStartTime;
|
||||
private transient Config config;
|
||||
|
||||
|
@ -171,6 +172,7 @@ public class HlsDownload extends AbstractHlsDownload {
|
|||
} catch (InterruptedException e) {
|
||||
Thread.currentThread().interrupt();
|
||||
}
|
||||
downloadFinished.set(true);
|
||||
synchronized (downloadFinished) {
|
||||
downloadFinished.notifyAll();
|
||||
}
|
||||
|
@ -242,8 +244,10 @@ public class HlsDownload extends AbstractHlsDownload {
|
|||
internalStop();
|
||||
try {
|
||||
synchronized (downloadFinished) {
|
||||
while (!downloadFinished.get()) {
|
||||
downloadFinished.wait(TimeUnit.SECONDS.toMillis(60));
|
||||
}
|
||||
}
|
||||
} catch (InterruptedException e) {
|
||||
Thread.currentThread().interrupt();
|
||||
LOG.error("Couldn't wait for download to finish", e);
|
||||
|
|
Loading…
Reference in New Issue