diff options
author | Dan Goodliffe <dan@randomdan.homeip.net> | 2018-04-16 21:35:11 +0100 |
---|---|---|
committer | Dan Goodliffe <dan@randomdan.homeip.net> | 2018-04-16 21:35:11 +0100 |
commit | b1cc0d05e799a551326da3b8376aaff8f374b9d9 (patch) | |
tree | 21efbe3480d2089452b4e5a342ae5f8065004b5c | |
parent | C++17 and Ice 3.7 (diff) | |
download | icespider-b1cc0d05e799a551326da3b8376aaff8f374b9d9.tar.bz2 icespider-b1cc0d05e799a551326da3b8376aaff8f374b9d9.tar.xz icespider-b1cc0d05e799a551326da3b8376aaff8f374b9d9.zip |
Route Optionsicespider-0.4.1
Provide an irouteOptions constructor that takes new class RouteOptions
for finer grained control over the setup process. This currently
provides the option to not add the default serializers.
-rw-r--r-- | icespider/core/Jamfile.jam | 2 | ||||
-rw-r--r-- | icespider/core/irouteHandler.cpp | 17 | ||||
-rw-r--r-- | icespider/core/irouteHandler.h | 4 | ||||
-rw-r--r-- | icespider/core/routeOptions.ice | 12 | ||||
-rw-r--r-- | icespider/fcgi/Jamfile.jam | 8 | ||||
-rw-r--r-- | icespider/fileSessions/Jamfile.jam | 1 | ||||
-rw-r--r-- | icespider/unittests/Jamfile.jam | 5 |
7 files changed, 41 insertions, 8 deletions
diff --git a/icespider/core/Jamfile.jam b/icespider/core/Jamfile.jam index b5712ad..216127e 100644 --- a/icespider/core/Jamfile.jam +++ b/icespider/core/Jamfile.jam @@ -4,7 +4,7 @@ lib boost_system ; lib boost_filesystem ; lib icespider-core : - [ glob-tree *.c *.cpp : bin ] + [ glob-tree *.c *.cpp *.ice : bin ] : <library>../common//icespider-common <library>adhocutil diff --git a/icespider/core/irouteHandler.cpp b/icespider/core/irouteHandler.cpp index 348ac8e..d4ad722 100644 --- a/icespider/core/irouteHandler.cpp +++ b/icespider/core/irouteHandler.cpp @@ -5,14 +5,23 @@ INSTANTIATEFACTORY(IceSpider::IRouteHandler, const IceSpider::Core *); namespace IceSpider { + const RouteOptions IRouteHandler::defaultRouteOptions { + }; IRouteHandler::IRouteHandler(HttpMethod m, const std::string & p) : + IRouteHandler(m, p, defaultRouteOptions) + { + } + + IRouteHandler::IRouteHandler(HttpMethod m, const std::string & p, const RouteOptions & ro) : Path(p), method(m) { - auto globalSerializers = AdHoc::PluginManager::getDefault()->getAll<Slicer::StreamSerializerFactory>(); - for (const auto & gs : globalSerializers) { - auto slash = gs->name.find('/'); - routeSerializers.insert({ { gs->name.substr(0, slash), gs->name.substr(slash + 1) }, gs->implementation() }); + if (ro.addDefaultSerializers) { + auto globalSerializers = AdHoc::PluginManager::getDefault()->getAll<Slicer::StreamSerializerFactory>(); + for (const auto & gs : globalSerializers) { + auto slash = gs->name.find('/'); + routeSerializers.insert({ { gs->name.substr(0, slash), gs->name.substr(slash + 1) }, gs->implementation() }); + } } } diff --git a/icespider/core/irouteHandler.h b/icespider/core/irouteHandler.h index 38bc1ed..4fbb581 100644 --- a/icespider/core/irouteHandler.h +++ b/icespider/core/irouteHandler.h @@ -7,13 +7,17 @@ #include <pathparts.h> #include <factory.h> #include <visibility.h> +#include "routeOptions.h" namespace IceSpider { class Core; class DLL_PUBLIC IRouteHandler : public Path { public: + const static RouteOptions defaultRouteOptions; + IRouteHandler(HttpMethod, const std::string & path); + IRouteHandler(HttpMethod, const std::string & path, const RouteOptions &); virtual ~IRouteHandler(); virtual void execute(IHttpRequest * request) const = 0; diff --git a/icespider/core/routeOptions.ice b/icespider/core/routeOptions.ice new file mode 100644 index 0000000..13279bb --- /dev/null +++ b/icespider/core/routeOptions.ice @@ -0,0 +1,12 @@ +#ifndef ICESPIDER_ROUTEOPTIONS_ICE +#define ICESPIDER_ROUTEOPTIONS_ICE + +[["ice-prefix"]] +module IceSpider { + local class RouteOptions { + bool addDefaultSerializers = true; + }; +}; + +#endif + diff --git a/icespider/fcgi/Jamfile.jam b/icespider/fcgi/Jamfile.jam index 9183820..47c10fa 100644 --- a/icespider/fcgi/Jamfile.jam +++ b/icespider/fcgi/Jamfile.jam @@ -1,12 +1,16 @@ +lib slicer ; lib fcgi : : <name>fcgi ; lib fcgi++ : : <name>fcgi++ ; lib icespider-fcgi : [ glob-tree *.cpp : bin ] : + <library>slicer <library>fcgi <library>fcgi++ - <library>..//core + <library>..//core//icespider-core + <implicit-dependency>../core//icespider-core : : - <library>..//core + <library>..//core//icespider-core + <implicit-dependency>../core//icespider-core ; diff --git a/icespider/fileSessions/Jamfile.jam b/icespider/fileSessions/Jamfile.jam index f08559d..1a457cd 100644 --- a/icespider/fileSessions/Jamfile.jam +++ b/icespider/fileSessions/Jamfile.jam @@ -9,5 +9,6 @@ lib icespider-filesessions : <library>boost_filesystem <library>adhocutil <library>../core//icespider-core + <implicit-dependency>../core//icespider-core ; diff --git a/icespider/unittests/Jamfile.jam b/icespider/unittests/Jamfile.jam index af8041c..aa8d879 100644 --- a/icespider/unittests/Jamfile.jam +++ b/icespider/unittests/Jamfile.jam @@ -50,11 +50,11 @@ run <library>slicer-xml <library>../xslt//icespider-xslt <library>../core//icespider-core + <implicit-dependency>../core//icespider-core <library>../compile//icespider-compile <implicit-dependency>../compile//icespider-compile <include>. <implicit-dependency>test-api - <dependency>../core : testCompile : ; @@ -76,6 +76,7 @@ run <library>slicer-xml <library>../common//icespider-common <library>../core//icespider-core + <implicit-dependency>../core//icespider-core <library>../xslt//icespider-xslt <library>../testing//icespider-testing <implicit-dependency>../common//icespider-common @@ -94,6 +95,7 @@ run <library>testCommon <library>../common//icespider-common <library>../core//icespider-core + <implicit-dependency>../core//icespider-core <library>boost_system <library>boost_filesystem <library>slicer @@ -114,6 +116,7 @@ run <library>boost_system <library>boost_filesystem <library>../core//icespider-core + <implicit-dependency>../core//icespider-core ; lib test-api : |