Created
January 25, 2010 19:27
-
-
Save glynos/286142 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
template < | |
class Tag | |
> | |
struct basic_request_handler_interface { | |
typedef basic_request<Tag> request_type; | |
typedef basic_response<Tag> response_type; | |
virtual void operator () (const request_type &request, | |
response_type &response) = 0; | |
}; | |
template < | |
class Handler, | |
class Tag | |
> | |
struct basic_request_handler_impl : basic_request_handler_interface<Tag> { | |
Handler handler; | |
basic_request_handler_impl(Handler handler) | |
: handler(handler) { | |
} | |
virtual void operator () (const request_type &request, | |
response_type &response) { | |
handler(request, response); | |
} | |
}; | |
template < | |
class Tag | |
> | |
struct basic_request_handler { | |
typedef basic_request<Tag> request_type; | |
typedef basic_response<Tag> response_type; | |
boost::shared_ptr<basic_request_handler_interface<Tag> > handler; | |
template < | |
class Handler | |
> | |
basic_request_handler(Handler handler) | |
: handler(new basic_request_handler_impl(handler)) { | |
} | |
virtual void operator () (const request_type &request, | |
response_type &response) { | |
(*handler)(request, response); | |
} | |
}; |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment