summaryrefslogtreecommitdiff
path: root/include/mbgl/storage
Commit message (Collapse)AuthorAgeFilesLines
...
* [core] Moving caching logic to DefaultFileSourceJohn Firebaugh2016-02-103-5/+10
| | | | This results in OnlineFileSource containing precisely the logic we want for reuse by OfflineFileSource, and no more.
* [core] Remove Response::Error::Reason::CanceledJohn Firebaugh2016-02-041-1/+0
| | | | There is no such thing as a cancelled response, only cancelled requests. A request that is cancelled does not have its callback called with a Response.
* [core] Change TileData pixelRatio to an integerJohn Firebaugh2016-01-291-1/+1
|
* [core] Rationalize Resource initializationJohn Firebaugh2016-01-291-14/+27
|
* [core] Ensure that FileSource has access to tile URL, pixelRatio, x, y, zJohn Firebaugh2016-01-291-0/+12
|
* [core] Include prior values of caching headers in ResourceJohn Firebaugh2016-01-222-14/+15
| | | | This allows the FileSource interface itself to support revalidation. We could (and probably should) now rewrite HTTPContextBase implementations as FileSource implementations.
* [core] Use better types for modified / expires / etagJohn Firebaugh2016-01-211-3/+4
|
* [core] Eliminate Response::stale and inline Response::isExpired()John Firebaugh2016-01-211-5/+0
| | | | Response::isExpired() had subtle and potentially confusing behavior around Seconds::zero(). It's best to inline it and comment why.
* [core] Add an explicit "not modified" indicator to ResponseJohn Firebaugh2016-01-141-0/+3
|
* [core] Eliminate FileCache interfaceJohn Firebaugh2016-01-142-30/+3
| | | | There is only one implementation and we're unlikely to add more.
* [core] Remove request coalescing in OnlineFileSourceJohn Firebaugh2016-01-131-1/+1
|
* [core] Eliminate platform::assetRoot()John Firebaugh2016-01-131-1/+1
| | | | I regenerated assets.zip so that all file paths have an `assets/` prefix, as the Android AssetFileSource implementation asserts, and removed `TEST_DATA` from the paths.
* [core] Simplify asset:// implementationJohn Firebaugh2016-01-131-1/+1
| | | | | | | | * Move asset:// URL handling to DefaultFileSource. * AssetFileSource implements FileSource interface and follows familiar implementation patterns. * Move default implementation to platform/default, zip implementation to platform/android. * Don't bother with modified / expires / etag -- assets are not cached so it doesn't matter. * Don't bother with interleaving individual IO calls on the implementation thread. That adds a lot of complexity for very little benefit.
* [core] Refactor to instance methods on OnlineFileRequestImplJohn Firebaugh2016-01-131-0/+2
|
* [core] Privatize SQLiteCacheJohn Firebaugh2016-01-082-47/+4
|
* [core] Make it possible to limit the size of the SQLite cacheThiago Marcos P. Santos2015-12-271-0/+3
|
* [tests] Test with OnlineFileSourceJohn Firebaugh2015-12-231-0/+34
| | | | | When we introduce OfflineFileSource, the behavior of existing tests should not change.
* [core] Prepare for OfflineFileSourceJohn Firebaugh2015-12-211-14/+7
| | | | | * Rename existing DefaultFileSource to OnlineFileSource * Restore a DefaultFileSource that's a passthrough to OnlineFileSource
* [core] add namespace comment to closing braceKonstantin Käfer2015-12-036-9/+9
|
* [core] Removed dependency on uv_loop from the file sourceThiago Marcos P. Santos2015-12-011-6/+8
|
* [core] Replace time_t with std::chrono::secondsBruno de Oliveira Abinader2015-11-271-2/+4
| | | | | | | Added aliases for std::chrono typedefs (eg. 'Seconds' for std::chrono::seconds). These aliases are used together with templated helper functions to replace time_t with std::chrono::seconds for most cases, in particular for 'modified' and 'expires' values in Response.
* [core] Use std::unique_ptr for FileSource requestJohn Firebaugh2015-11-163-68/+18
|
* [core] Pass a value to response callback, not a referenceJohn Firebaugh2015-11-162-2/+2
|
* [core] Do not pass uv_loop_t aroundThiago Marcos P. Santos2015-11-162-4/+2
| | | | This should be abstracted by util::RunLoop
* [core] move retry logic to DefaultFileSourceKonstantin Käfer2015-11-022-6/+33
|
* [core] reparse tiles when new data arrivesKonstantin Käfer2015-10-261-0/+1
| | | | We're now reparsing tiles when they expire. We're also swapping out buckets atomically to avoid flickering data; i.e. we're displaying the old data as long as we don't have a new parsed bucket for that layer yet. The parsed buckets now live in the *TileData objects rather than in the TileWorker; only partially parsed == pending buckets will remain in the TileWorker. Once they're parsed, they're moved to the *TileData object.
* [core] Make response data shared to avoid excessive copyingKonstantin Käfer2015-10-261-1/+1
|
* [core] do not use std::atomic_* with shared_ptrsKonstantin Käfer2015-10-261-4/+4
| | | | It's not implemented in GCC 4.9.2's stdlib (https://gcc.gnu.org/bugzilla/show_bug.cgi?id=57250). Instead, we're now always using a mutex to protect access; we previously created a mutex only on cancelation, but since we're always canceling now, it makes sense to allocate it right away.
* [core] add support for stale responsesKonstantin Käfer2015-10-261-0/+4
| | | | We're now returning stale responses from cache. Those responses will have the `stale` flag set to true. Currently, all requesters in the core code discard stale responses, and cancel the request immediately after they got a non-stale response.
* [node] Handle tiles which 404 betterbsudekum2015-09-291-1/+1
|
* Create SharedSQLiteCacheLeith Bade2015-09-161-0/+10
|
* Support v8 sprite, glyph, and style mapbox:// urlsLucas Wojciechowski2015-08-211-2/+2
|
* Move WorkerTask functionality into RunLoop coreJohn Firebaugh2015-07-012-2/+3
| | | | | As a byproduct, this makes FileCache get requests properly cancelable.
* Replace mbgl::util::make_unique<> with std::make_unique<>Konstantin Käfer2015-05-261-1/+0
|
* DefaultFileSource has responsibility for handling mapbox:// URLsJohn Firebaugh2015-05-262-4/+10
|
* Use uv::asyncJohn Firebaugh2015-05-131-2/+2
|
* Remove unusedJohn Firebaugh2015-05-132-5/+0
| | | | | There are no longer any requests made that don't have a run loop to dispatch back to.
* Cancel all pending requests before leavingThiago Marcos P. Santos2015-05-051-2/+0
| | | | | | | | | | | | This still has the unwanted side effect off blocking the Map thread waiting for the workers to return (because they hold a reference to the Map thread main loop). Maybe the only way to solve this would be having a I/O thread for dispatching messages. The Request is not bound anymore to the invoker thread because the workers will request for glyphs, but the reply will arrive at the Map thread.
* Write SQLite tests in terms of ImplJohn Firebaugh2015-05-011-1/+2
|
* Remove Environment::terminate and associated codeJohn Firebaugh2015-04-283-24/+7
| | | | Fixes #1336
* make the request header public as the node module requires itKonstantin Käfer2015-04-171-0/+60
|
* rename SQLiteCache::Thread to SQLiteCache::ImplKonstantin Käfer2015-04-131-2/+2
|
* make implementation files private headersKonstantin Käfer2015-04-138-371/+4
|
* hide Thread<> and separate the Implementation objectKonstantin Käfer2015-04-135-52/+17
|
* convert DefaultFileSource to use util::Thread<>Konstantin Käfer2015-04-104-36/+20
|
* add Thread<T> and RunLoopKonstantin Käfer2015-04-102-28/+18
| | | | | | Thread<T> is a generic thread management object that starts a thread, creates an object T in that thread and calls its .start() function. When the Thread<T> object is destructed (which must happen in the thread that created it), it'll call the object's .stop() function, and wait for thread termination. The .stop() function must somehow get the thread to terminate. Note that object T's constructor/destructor/start()/stop() must be protected/private, and Thread<T> must be declared as a friend class. All public functions may be called from any thread and are exposed through operator->(). RunLoop encapsulates a libuv runloop and has a facility of dispatching function objects to the thread. It can be used either as a worker thread class by itself, or it can be derived from. This commit converts SQLiteCache to derive from RunLoop and removes the custom code used previously for managing the cache thread.
* make sqlite storage more resilient to sporadic errorsKonstantin Käfer2015-04-071-0/+2
| | | | | | | | - catch SQLite exceptions and report them - failed statements are ignored, we're really just caching here, so if it fails we're handling it gracefully elsewhere - handle cases where the database file goes away after we opened it - handle cases where the schema wasn't created after the database file was opened successfully - add tests
* fix rare issue that had the notify and cancel callbacks called in the wrong ↵Konstantin Käfer2015-03-131-4/+6
| | | | order
* remove unused enumKonstantin Käfer2015-03-061-1/+0
|
* scope Requests to an Environment object for easier cancelationKonstantin Käfer2015-03-064-18/+54
| | | | | | | | | we are now scoping all file requests to an environment object. The FileSource implementation treats this as an opaque pointer, but allows canceling all Requests that are associated with that pointer. This is necessary to abort all file requests that originated from a particular Map object. Aborting a file request is different from canceling a file request: A canceled request doesn't have its callback called, while an aborted request will have its callback called with an error, indicating that the environment is going to be shut down.