Also make a slightly cleaner extraction.
This hopefully has a couple of advantages:
1) The code should now be a bit cleaner
2) It makes testing the queueing code easier
3) In future it might be possible to have a separate queue per style
allowing e.g. to perform fair queueing between styles.
add test framework that can be run with 'make test' - refs #10
This still needs some more cleanup to get it working, but as it doesn't effect anything existing, I'll do that post merge.
Also work around a bug in cairomm flags in Mapnik 2.0 (#787) that has been fixed upstream
a long time ago, but is still present in the ubuntu mapnik packages.
Both are read only backends, i.e. they can't be used in renderd, but only in mod_tile
ro_http_proxy is a proxy storage backend that retrieves tiles from a remote http tile server
ro_composite is a storage backend that composits two tiles before passing them up.
Although ro_composite can composite tiles from any two storage backends, conceptually it only
works well, if at least one set of tiles are static non updating tiles, as the updating logic
does not allow for requesting rendering updates for both tilesets
- automatically find apxs in addition to apxs2. This should make it easier to configure on more systems
- include freetype2.m4. Otherwise ./autogen.sh already fails with missing macro.
- fail if no C++ compiler was found
Storage backends might not be fully thread safe when reusing the same context, like for example the memcached storage backend,
therefore initialise a separate storage backend / context per thread rather than per process.
Unfortunately there is no way to do this in Apache 2.2. So there you will need to use mpm prefork for non thread safe backends
Remove hard coded references to the spherical mercator projection and
replace them with something a little more generic. It is still necessary
to add code to support new projections, but it is limited to a few configuration numbers
This initial commit supports spherical mercator and plate carree.
This commit also makes the tile size configurable. The default remains at 256 px.
So far, (meta)tiles could only be stored and retrieved from a locally mounted posix filesystem. Although, the posix
filesystem API is it self a plugable storage layer into which one can mount many different filsystems, from temporary
filesystems to network filesystems, as mod_tile installations scale up to multi-server environments this might not be sufficient and one
may want to use other storage layers.
This patch therefore abstracts all storage calls out into a separate API that can be implemented by various storage backends to fit the needs of different
installations.
Three storage backends are included in this commit:
- file backend: This is the equivalent of what existed before in mod_tile / renderd. This uses a posix filesystem to store (meta)tiles
- memcached: This stores tiles in a memcached store
- rados: This stores tiles in a rados / ceph cluster
The memcached and rados backends should currently still be considered as experimental
There are also other refactoring and cleanups in this commit