1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52
| template<typename HandlingResult, typename Protocol>
struct handle_result
{
static session<Protocol>* call(const HandlingResult& hr, session<Protocol>* original_session, socket_impl<Protocol>& s)
{
std::cout << "default"<<std::endl;
return original_session;
}
};
/// SPECIALISATION
template<typename Protocol>
struct packet::handle_result<handlers::received_pong, Protocol>
{
session<Protocol>* call(const handlers::received_pong& hr, session<Protocol>* original_session, socket_impl<Protocol>& s)
{
if(std::chrono::system_clock::now() - config::ping_timeout > original_session.mark())
{
throw handlers::remove_client();
}
return original_session;
}
};
template<typename Protocol>
struct packet::handle_result<handlers::handling_result, Protocol>
{
session<Protocol>* call(const handlers::handling_result& hr, session<Protocol>* original_session, socket_impl<Protocol>& s)
{
return original_session;
}
};
template<typename Protocol>
struct packet::handle_result<handlers::change_handler<sessions::server<Protocol>>, Protocol>
{
session<Protocol>* call(const handlers::change_handler<sessions::server<Protocol>>& hr, session<Protocol>* original_session, socket_impl<Protocol>& s)
{
std::cout << "changing server handler "<<std::endl;
std::cout << original_session << " to "<<std::endl;
templates::realloc_pointer<session<Protocol>, sessions::server<Protocol>>::call(original_session, s, hr.some_id);
std::cout << original_session<<std::endl;
return original_session;
}
};
template<typename Protocol>
struct packet::handle_result<handlers::change_handler<sessions::update_server<Protocol>>, Protocol>
{
session<Protocol>* call(const handlers::change_handler<sessions::update_server<Protocol>>& hr, session<Protocol>* original_session, socket_impl<Protocol>& s)
{
templates::realloc_pointer<session<Protocol>, sessions::update_server<Protocol>>::call(original_session, s, hr.some_id);
return original_session;
}
}; |
Partager