Orxonox  0.0.5 Codename: Arcturus
MasterServer.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  * Sandro 'smerkli' Merkli
24  * Co-authors:
25  * ...
26  *
27  */
28 
29 #ifndef _MasterServer_H__
30 #define _MasterServer_H__
31 
32 #include "NetworkPrereqs.h"
33 
34 /* orxonox includes */
35 #include <enet/enet.h>
36 #include <network/packet/Chat.h>
37 #include <network/packet/ClassID.h>
41 #include <network/packet/Welcome.h>
43 
44 /* my includes */
45 #include "ServerList.h"
46 #include "PeerList.h"
47 
48 /* c compatibility */
49 #include <cstdio>
50 
51 #include <OgreStringConverter.h>
52 
53 
54 namespace orxonox
55 {
56  /* singleton */
58  {
59  public:
60  MasterServer();
61  ~MasterServer();
62 
63  /* main routine */
64  int run();
65 
66  /* static pointer for commands */
69  { return instance; }
70  static void setInstance( MasterServer *setto )
71  { instance = setto; }
72 
73  /* functions for commands */
74  static void listServers( void );
75  static void delServer( std::string todeladdr );
76 
77  private:
78  /* methods */
79  int eventConnect( ENetEvent *event );
80  int eventDisconnect( ENetEvent *event );
81  int eventData( ENetEvent *event );
82 
83  /* helpers */
84  void helper_sendlist( ENetEvent *event );
85  void helper_cleanupServers( void );
86 
87  /* members */
91 
92  unsigned int port;
93  bool quit;
94 
95  };
96 }
97 
98 #endif /* _MasterServer_H__ */
static MasterServer * getInstance()
Definition: MasterServer.h:68
Portable internet address structure.
Definition: enet.h:82
Shared library macros, enums, constants and forward declarations for the network library ...
ENetAddress address
Definition: MasterServer.h:88
ServerList mainlist
Definition: MasterServer.h:90
static void setInstance(MasterServer *setto)
Definition: MasterServer.h:70
::std::string string
Definition: gtest-port.h:756
Structure to describe a single event.
Definition: ScriptController.h:42
Definition: MasterServer.h:57
An ENet host for communicating with peers.
Definition: enet.h:345
static MasterServer * instance
Definition: MasterServer.h:67
An ENet event as returned by enet_host_service().
Definition: enet.h:416
Die Wagnis Klasse hat die folgenden Aufgaben:
Definition: ApplicationPaths.cc:66
#define _NetworkExport
Definition: NetworkPrereqs.h:59
unsigned int port
Definition: MasterServer.h:92
ENet public header file.
bool quit
Definition: MasterServer.h:93
This class is keeps a list of game servers and some info about them.
Definition: ServerList.h:65
ENetHost * server
Definition: MasterServer.h:89