Orxonox  0.0.5 Codename: Arcturus
NetworkFunctionManager.h
Go to the documentation of this file.
1 /*
2  * ORXONOX - the hottest 3D action shooter ever to exist
3  * > www.orxonox.net <
4  *
5  *
6  * License notice:
7  *
8  * This program is free software; you can redistribute it and/or
9  * modify it under the terms of the GNU General Public License
10  * as published by the Free Software Foundation; either version 2
11  * of the License, or (at your option) any later version.
12  *
13  * This program is distributed in the hope that it will be useful,
14  * but WITHOUT ANY WARRANTY; without even the implied warranty of
15  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16  * GNU General Public License for more details.
17  *
18  * You should have received a copy of the GNU General Public License
19  * along with this program; if not, write to the Free Software
20  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
21  *
22  * Author:
23  * Fabian 'x3n' Landau
24  * Co-authors:
25  * ...
26  *
27  */
28 
29 #ifndef __NetworkFunctionManager_H__
30 #define __NetworkFunctionManager_H__
31 
32 #include "NetworkPrereqs.h"
33 
34 #include <cassert>
35 #include <map>
36 #include <set>
37 
38 #include "util/Singleton.h"
39 #include "NetworkFunction.h"
40 
41 namespace orxonox
42 {
43  class _NetworkExport NetworkFunctionManager : public Singleton<NetworkFunctionManager>
44  {
46 
47  public:
48  void registerFunction(NetworkFunctionBase* function);
49  void unregisterFunction(NetworkFunctionBase* function);
50 
51  inline const std::set<NetworkFunctionBase*>& getAllFunctions()
52  { return functions_; }
53 
54  NetworkFunctionBase* getFunctionByName(const std::string& name);
55  NetworkFunctionBase* getFunctionByFunctionPointer(const NetworkFunctionPointer& p);
56  NetworkFunctionBase* getFunctionByNetworkId(uint32_t id);
57 
58  void clearNetworkIDs();
59 
60  private:
61  std::set<NetworkFunctionBase*> functions_;
62  std::map<std::string, NetworkFunctionBase*> nameMap_;
63  std::map<NetworkFunctionPointer, NetworkFunctionBase*> functorMap_;
64  std::map<uint32_t, NetworkFunctionBase*> idMap_;
65 
67  };
68 }
69 
70 #endif /* __NetworkFunctionManager_H__ */
Definition: NetworkFunction.h:83
Shared library macros, enums, constants and forward declarations for the network library ...
Definition: NetworkFunction.h:53
::std::string string
Definition: gtest-port.h:756
std::map< NetworkFunctionPointer, NetworkFunctionBase * > functorMap_
Definition: NetworkFunctionManager.h:63
Definition: NetworkFunctionManager.h:43
std::set< NetworkFunctionBase * > functions_
Definition: NetworkFunctionManager.h:61
std::map< std::string, NetworkFunctionBase * > nameMap_
Definition: NetworkFunctionManager.h:62
Base for singleton classes.
Definition: Singleton.h:114
static NetworkFunctionManager * singletonPtr_s
Definition: NetworkFunctionManager.h:66
Die Wagnis Klasse hat die folgenden Aufgaben:
Definition: ApplicationPaths.cc:66
#define _NetworkExport
Definition: NetworkPrereqs.h:59
Definition of the Singleton template that is used as base class for classes that allow only one insta...
std::map< uint32_t, NetworkFunctionBase * > idMap_
Definition: NetworkFunctionManager.h:64
const std::set< NetworkFunctionBase * > & getAllFunctions()
Definition: NetworkFunctionManager.h:51