summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDan Goodliffe <dan@randomdan.homeip.net>2018-04-16 21:35:11 +0100
committerDan Goodliffe <dan@randomdan.homeip.net>2018-04-16 21:35:11 +0100
commitb1cc0d05e799a551326da3b8376aaff8f374b9d9 (patch)
tree21efbe3480d2089452b4e5a342ae5f8065004b5c
parentC++17 and Ice 3.7 (diff)
downloadicespider-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.jam2
-rw-r--r--icespider/core/irouteHandler.cpp17
-rw-r--r--icespider/core/irouteHandler.h4
-rw-r--r--icespider/core/routeOptions.ice12
-rw-r--r--icespider/fcgi/Jamfile.jam8
-rw-r--r--icespider/fileSessions/Jamfile.jam1
-rw-r--r--icespider/unittests/Jamfile.jam5
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 :