1 | // License: GPL. For details, see LICENSE file.
|
---|
2 | package org.openstreetmap.josm.data.imagery;
|
---|
3 |
|
---|
4 | import java.util.Map;
|
---|
5 |
|
---|
6 | import org.apache.commons.jcs.access.behavior.ICacheAccess;
|
---|
7 | import org.openstreetmap.gui.jmapviewer.Tile;
|
---|
8 | import org.openstreetmap.gui.jmapviewer.interfaces.TileJob;
|
---|
9 | import org.openstreetmap.gui.jmapviewer.interfaces.TileLoaderListener;
|
---|
10 | import org.openstreetmap.josm.data.cache.BufferedImageCacheEntry;
|
---|
11 | import org.openstreetmap.josm.data.preferences.IntegerProperty;
|
---|
12 |
|
---|
13 | /**
|
---|
14 | * Tileloader for WMS based imagery. It is separate to use different ThreadPoolExecutor, as we want
|
---|
15 | * to define number of simultaneous downloads for WMS separately
|
---|
16 | *
|
---|
17 | * @author Wiktor Niesiobędzki
|
---|
18 | * @since 8526
|
---|
19 | */
|
---|
20 | public class WMSCachedTileLoader extends TMSCachedTileLoader {
|
---|
21 |
|
---|
22 | /**
|
---|
23 | * overrides the THREAD_LIMIT in superclass, as we want to have separate limit and pool for WMS
|
---|
24 | */
|
---|
25 | public static final IntegerProperty THREAD_LIMIT = new IntegerProperty("imagery.wms.loader.maxjobs", 3);
|
---|
26 |
|
---|
27 | /**
|
---|
28 | * Creates a TileLoader with separate WMS downloader.
|
---|
29 | *
|
---|
30 | * @param listener that will be notified when tile is loaded
|
---|
31 | * @param cache reference
|
---|
32 | * @param connectTimeout to tile source
|
---|
33 | * @param readTimeout from tile source
|
---|
34 | * @param headers to be sent with requests
|
---|
35 | */
|
---|
36 | public WMSCachedTileLoader(TileLoaderListener listener, ICacheAccess<String, BufferedImageCacheEntry> cache,
|
---|
37 | int connectTimeout, int readTimeout, Map<String, String> headers) {
|
---|
38 |
|
---|
39 | super(listener, cache, connectTimeout, readTimeout, headers);
|
---|
40 | setDownloadExecutor(TMSCachedTileLoader.getNewThreadPoolExecutor("WMS-downloader-%d", THREAD_LIMIT.get()));
|
---|
41 | }
|
---|
42 |
|
---|
43 | @Override
|
---|
44 | public TileJob createTileLoaderJob(Tile tile) {
|
---|
45 | return new WMSCachedTileLoaderJob(listener, tile, cache, connectTimeout, readTimeout, headers, getDownloadExecutor());
|
---|
46 | }
|
---|
47 | }
|
---|