1package com.bumptech.glide.request;
2
3/**
4 * A coordinator that coordinates two individual {@link Request}s that load a small thumbnail version of an image and
5 * the full size version of the image at the same time.
6 */
7public class ThumbnailRequestCoordinator implements RequestCoordinator, Request {
8    private Request full;
9    private Request thumb;
10
11    public void setRequests(Request full, Request thumb) {
12        this.full = full;
13        this.thumb = thumb;
14    }
15
16    @Override
17    public boolean canSetImage(Request request) {
18        return request == full || !full.isComplete();
19    }
20
21    @Override
22    public boolean canSetPlaceholder(Request request) {
23        return request == full && !isAnyRequestComplete();
24    }
25
26    @Override
27    public boolean isAnyRequestComplete() {
28        return full.isComplete() || thumb.isComplete();
29    }
30
31    @Override
32    public void run() {
33        if (!thumb.isRunning()) {
34            thumb.run();
35        }
36        if (!full.isRunning()) {
37            full.run();
38        }
39    }
40
41    @Override
42    public void clear() {
43        full.clear();
44        thumb.clear();
45    }
46
47    @Override
48    public boolean isRunning() {
49        return full.isRunning();
50    }
51
52    @Override
53    public boolean isComplete() {
54        return full.isComplete();
55    }
56
57    @Override
58    public boolean isFailed() {
59        return full.isFailed();
60    }
61
62    @Override
63    public void recycle() {
64        full.recycle();
65        thumb.recycle();
66    }
67}
68