event_dispatcher.h
1/*
2** ClanLib SDK
3** Copyright (c) 1997-2020 The ClanLib Team
4**
5** This software is provided 'as-is', without any express or implied
6** warranty. In no event will the authors be held liable for any damages
7** arising from the use of this software.
8**
9** Permission is granted to anyone to use this software for any purpose,
10** including commercial applications, and to alter it and redistribute it
11** freely, subject to the following restrictions:
12**
13** 1. The origin of this software must not be misrepresented; you must not
14** claim that you wrote the original software. If you use this software
15** in a product, an acknowledgment in the product documentation would be
16** appreciated but is not required.
17** 2. Altered source versions must be plainly marked as such, and must not be
18** misrepresented as being the original software.
19** 3. This notice may not be removed or altered from any source distribution.
20**
21** Note: Some of the libraries ClanLib may link to may have additional
22** requirements or restrictions.
23**
24** File Author(s):
25**
26** Magnus Norddahl
27** Chu Chin Kuan
28*/
29
30#pragma once
31
32#include "event.h"
33#include <map>
34
35namespace clan
36{
37 template<class... Params>
39 {
40 public:
41 typedef std::function< void(const NetGameEvent &, Params...) > CallbackClass;
42
43 CallbackClass &func_event(const std::string &name) { return event_handlers[name]; }
44
49 bool dispatch(const NetGameEvent &game_event, Params... params)
50 {
51 auto it = event_handlers.find(game_event.get_name());
52 if (it != event_handlers.end() && (bool)it->second)
53 {
54 it->second(game_event, params...);
55 return true;
56 }
57 else
58 {
59 return false;
60 }
61 }
62
63 private:
64 std::map<std::string, CallbackClass> event_handlers;
65
66 };
67}
Definition event_dispatcher.h:39
bool dispatch(const NetGameEvent &game_event, Params... params)
Dispatches the event object.
Definition event_dispatcher.h:49
std::function< void(const NetGameEvent &, Params...) > CallbackClass
Definition event_dispatcher.h:41
CallbackClass & func_event(const std::string &name)
Definition event_dispatcher.h:43
NetGameEvent.
Definition Network/NetGame/event.h:40
std::string get_name() const
Definition Network/NetGame/event.h:46
Definition clanapp.h:36