summaryrefslogtreecommitdiffstats
path: root/src/Common/RequestHandlers/SimpleRequestHandlerGroup.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/Common/RequestHandlers/SimpleRequestHandlerGroup.h')
-rw-r--r--src/Common/RequestHandlers/SimpleRequestHandlerGroup.h19
1 files changed, 16 insertions, 3 deletions
diff --git a/src/Common/RequestHandlers/SimpleRequestHandlerGroup.h b/src/Common/RequestHandlers/SimpleRequestHandlerGroup.h
index 86009f3..32e46ce 100644
--- a/src/Common/RequestHandlers/SimpleRequestHandlerGroup.h
+++ b/src/Common/RequestHandlers/SimpleRequestHandlerGroup.h
@@ -28,11 +28,24 @@ namespace RequestHandlers {
class SimpleRequestHandlerGroup : public RequestHandlerGroup {
private:
+ class GroupRequestHandler : public RequestHandler {
+ private:
+ std::string type;
+ boost::function3<void, boost::shared_ptr<const XmlPacket>, XmlPacket*, Connection*> handler;
+
+ protected:
+ virtual void handlePacket(boost::shared_ptr<const XmlPacket> packet);
+
+ public:
+ GroupRequestHandler(Application *application, const std::string &type0, const boost::function3<void, boost::shared_ptr<const XmlPacket>, XmlPacket*, Connection*> &handler0)
+ : RequestHandler(application), type(type0), handler(handler0) {}
+ };
+
std::set<std::string> types;
- std::map<std::string, boost::function2<void, boost::shared_ptr<const XmlPacket>, XmlPacket*> > handlers;
+ std::map<std::string, boost::function3<void, boost::shared_ptr<const XmlPacket>, XmlPacket*, Connection*> > handlers;
protected:
- void registerHandler(const std::string &type, const boost::function2<void, boost::shared_ptr<const XmlPacket>, XmlPacket*> &handler) {
+ void registerHandler(const std::string &type, const boost::function3<void, boost::shared_ptr<const XmlPacket>, XmlPacket*, Connection*> &handler) {
types.insert(type);
handlers.insert(std::make_pair(type, handler));
}
@@ -44,7 +57,7 @@ class SimpleRequestHandlerGroup : public RequestHandlerGroup {
return types;
}
- virtual boost::shared_ptr<RequestHandler> createRequestHandler(const std::string &type);
+ virtual boost::shared_ptr<RequestHandler> createRequestHandler(Application *application, const std::string &type);
};
}