diff options
Diffstat (limited to 'src/Common/RequestHandlers/SimpleRequestHandlerGroup.h')
-rw-r--r-- | src/Common/RequestHandlers/SimpleRequestHandlerGroup.h | 19 |
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); }; } |