Hide implementation of MessageHandlerMap.

This commit is contained in:
Jared Boone 2015-08-14 17:31:23 -07:00
parent 2aa8ae0d1f
commit a7226820d0
9 changed files with 95 additions and 78 deletions

View file

@ -246,12 +246,19 @@ class MessageHandlerMap {
public:
using MessageHandler = std::function<void(const Message* const p)>;
MessageHandler& operator[](Message::ID n) {
return map_[toUType(n)];
void register_handler(const Message::ID id, MessageHandler&& handler) {
map_[toUType(id)] = std::move(handler);
}
const MessageHandler& operator[](Message::ID n) const {
return map_[toUType(n)];
void unregister_handler(const Message::ID id) {
map_[toUType(id)] = nullptr;
}
void send(const Message* const message) {
auto& fn = map_[toUType(message->id)];
if( fn ) {
fn(message);
}
}
private: