// License: GPL. For details, see LICENSE file.
package org.openstreetmap.josm.data.imagery;
import java.util.Map;
import org.apache.commons.jcs.access.behavior.ICacheAccess;
import org.openstreetmap.gui.jmapviewer.Tile;
import org.openstreetmap.gui.jmapviewer.interfaces.TileJob;
import org.openstreetmap.gui.jmapviewer.interfaces.TileLoaderListener;
import org.openstreetmap.josm.data.cache.BufferedImageCacheEntry;
import org.openstreetmap.josm.data.preferences.IntegerProperty;
/**
* Tileloader for WMS based imagery. It is separate to use different ThreadPoolExecutor, as we want
* to define number of simultaneous downloads for WMS separately
*
* @author Wiktor Niesiobędzki
* @since 8526
*/
public class WMSCachedTileLoader extends TMSCachedTileLoader {
/**
* overrides the THREAD_LIMIT in superclass, as we want to have separate limit and pool for WMS
*/
public static final IntegerProperty THREAD_LIMIT = new IntegerProperty("imagery.wms.loader.maxjobs", 3);
/**
* Creates a TileLoader with separate WMS downloader.
*
* @param listener that will be notified when tile is loaded
* @param cache reference
* @param connectTimeout to tile source
* @param readTimeout from tile source
* @param headers to be sent with requests
*/
public WMSCachedTileLoader(TileLoaderListener listener, ICacheAccess<String, BufferedImageCacheEntry> cache,
int connectTimeout, int readTimeout, Map<String, String> headers) {
super(listener, cache, connectTimeout, readTimeout, headers);
setDownloadExecutor(TMSCachedTileLoader.getNewThreadPoolExecutor("WMS-downloader-%d", THREAD_LIMIT.get()));
}
@Override
public TileJob createTileLoaderJob(Tile tile) {
return new WMSCachedTileLoaderJob(listener, tile, cache, connectTimeout, readTimeout, headers, getDownloadExecutor());
}
}