3 #include "telnetpp/detail/return_default.hpp" 9 namespace telnetpp {
namespace detail {
52 ,
class KeyFromMessagePolicy
58 typedef Message message_type;
59 typedef Result result_type;
60 typedef std::function<Result (Message const&)> function_type;
65 > registered_functions_map_type;
73 template <
typename KeyType,
typename Function>
78 registered_functions_[std::forward<KeyType>(key)] =
79 std::forward<Function>(
function);
88 template <
typename KeyType>
89 void unregister_route(KeyType &&key)
91 registered_functions_.erase(std::forward<KeyType>(key));
100 template <
typename Function>
101 void set_unregistered_route(Function &&route)
103 unregistered_route_ = std::forward<Function>(route);
114 Result operator()(Message
const& message)
const 116 auto iter = registered_functions_.find(
117 KeyFromMessagePolicy::key_from_message(message));
119 if (iter != registered_functions_.end())
121 return iter->second(message);
123 else if (unregistered_route_ !=
nullptr)
125 return unregistered_route_(message);
130 return detail::return_default_constructed<Result>{}();
134 registered_functions_map_type registered_functions_;
135 function_type unregistered_route_;
Definition: byte_converter.hpp:4