summaryrefslogtreecommitdiff
path: root/icespider
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 /icespider
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.
Diffstat (limited to 'icespider')
-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 :