libosmscout  0.1
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Modules
osmscout::TileCache Class Reference

#include <TileCache.h>

+ Inheritance diagram for osmscout::TileCache:

Signals

void tileRequested (uint32_t zoomLevel, uint32_t x, uint32_t y)
 

Public Member Functions

void cleanupCache (uint32_t maxRemove, const std::chrono::milliseconds &maximumLifetime)
 
void clearPendingRequests ()
 remove all pending requests TODO: in case of multiple map widgets, add some id to avoid removing requests of another widget More...
 
bool contains (uint32_t zoomLevel, uint32_t x, uint32_t y)
 
bool containsRequest (uint32_t zoomLevel, uint32_t x, uint32_t y)
 
TileCacheVal get (uint32_t zoomLevel, uint32_t x, uint32_t y)
 
size_t getEpoch () const
 
void incEpoch ()
 
bool invalidate (osmscout::GeoBox box=osmscout::GeoBox())
 
bool isRequestQueueEmpty () const
 
void mergeAndStartRequests (uint32_t zoomLevel, uint32_t xtile, uint32_t ytile, uint32_t &xFrom, uint32_t &xTo, uint32_t &yFrom, uint32_t &yTo, uint32_t maxWidth, uint32_t maxHeight)
 
void put (uint32_t zoomLevel, uint32_t x, uint32_t y, const QImage &image, size_t epoch=0)
 
bool reemitRequests ()
 trigger request signal for all pending requests More...
 
bool removeRequest (uint32_t zoomLevel, uint32_t x, uint32_t y)
 Remove pending request. More...
 
bool request (uint32_t zoomLevel, uint32_t x, uint32_t y)
 try to create new tile request. More...
 
bool startRequestProcess (uint32_t zoomLevel, uint32_t x, uint32_t y)
 
 TileCache (size_t cacheSize)
 
 ~TileCache () override=default
 

Detailed Description

Cache have to be locked by its mutex() while access. It owns all inserted tiles and it is responsible for its release

Constructor & Destructor Documentation

◆ TileCache()

osmscout::TileCache::TileCache ( size_t  cacheSize)
explicit

◆ ~TileCache()

osmscout::TileCache::~TileCache ( )
overridedefault

Member Function Documentation

◆ cleanupCache()

void osmscout::TileCache::cleanupCache ( uint32_t  maxRemove,
const std::chrono::milliseconds &  maximumLifetime 
)

first, we will iterate over all entries and remove up to maxRemove tiles older than maximumLifetime, if no such entry found and size is bigger than cacheSize, remove oldest tile

Goal is to remove more items at once and minimise frequency of this expensive cleaning

References osmscout::TileCacheVal::lastAccess.

Referenced by osmscout::TiledMapOverlay::FlushCaches(), osmscout::TiledMapRenderer::FlushVisualCaches(), put(), and osmscout::TiledMapOverlay::setEnabled().

◆ clearPendingRequests()

void osmscout::TileCache::clearPendingRequests ( )

remove all pending requests TODO: in case of multiple map widgets, add some id to avoid removing requests of another widget

Referenced by osmscout::TiledMapRenderer::onlineTilesEnabledChanged(), osmscout::TiledMapRenderer::onOfflineMapChanged(), osmscout::TileLoaderThread::onProviderChanged(), osmscout::TiledMapOverlay::paint(), and osmscout::TiledMapRenderer::RenderMap().

◆ contains()

bool osmscout::TileCache::contains ( uint32_t  zoomLevel,
uint32_t  x,
uint32_t  y 
)

◆ containsRequest()

bool osmscout::TileCache::containsRequest ( uint32_t  zoomLevel,
uint32_t  x,
uint32_t  y 
)

◆ get()

TileCacheVal osmscout::TileCache::get ( uint32_t  zoomLevel,
uint32_t  x,
uint32_t  y 
)

◆ getEpoch()

size_t osmscout::TileCache::getEpoch ( ) const
inline

◆ incEpoch()

◆ invalidate()

◆ isRequestQueueEmpty()

bool osmscout::TileCache::isRequestQueueEmpty ( ) const

◆ mergeAndStartRequests()

void osmscout::TileCache::mergeAndStartRequests ( uint32_t  zoomLevel,
uint32_t  xtile,
uint32_t  ytile,
uint32_t &  xFrom,
uint32_t &  xTo,
uint32_t &  yFrom,
uint32_t &  yTo,
uint32_t  maxWidth,
uint32_t  maxHeight 
)

◆ put()

void osmscout::TileCache::put ( uint32_t  zoomLevel,
uint32_t  x,
uint32_t  y,
const QImage &  image,
size_t  epoch = 0 
)

◆ reemitRequests()

bool osmscout::TileCache::reemitRequests ( )

trigger request signal for all pending requests

References request(), and tileRequested().

Referenced by osmscout::TiledMapRenderer::onLoadJobFinished().

◆ removeRequest()

bool osmscout::TileCache::removeRequest ( uint32_t  zoomLevel,
uint32_t  x,
uint32_t  y 
)

Remove pending request.

Parameters
zoomLevel
x
y
Returns
true if there was such request

Referenced by put(), osmscout::TileLoaderThread::tileDownloadFailed(), and osmscout::TiledMapRenderer::tileDownloadFailed().

◆ request()

bool osmscout::TileCache::request ( uint32_t  zoomLevel,
uint32_t  x,
uint32_t  y 
)

try to create new tile request.

If this request don't exists already, it emit signal tileRequested and return true. Otherwise false.

References tileRequested().

Referenced by reemitRequests(), osmscout::TileLoaderThread::tileDownloadFailed(), and osmscout::TiledMapRenderer::tileDownloadFailed().

◆ startRequestProcess()

bool osmscout::TileCache::startRequestProcess ( uint32_t  zoomLevel,
uint32_t  x,
uint32_t  y 
)

◆ tileRequested

void osmscout::TileCache::tileRequested ( uint32_t  zoomLevel,
uint32_t  x,
uint32_t  y 
)
signal

The documentation for this class was generated from the following files: