Orxonox  0.0.5 Codename: Arcturus
Server.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  * Oliver Scheuss
24  * Co-authors:
25  * ...
26  *
27  */
28 
29 #ifndef _Server_H__
30 #define _Server_H__
31 
32 #include "NetworkPrereqs.h"
33 
34 #include <deque>
35 #include <vector>
36 
37 #include "util/UtilPrereqs.h"
38 #include "core/CorePrereqs.h"
39 #include "Host.h"
40 #include "ServerConnection.h"
41 #include "LANDiscoverable.h"
42 #include "WANDiscoverable.h"
43 
44 
45 namespace orxonox
46 {
47 
53  {
54  public:
55  Server();
56  Server(int port);
57  Server(int port, const std::string& bindAddress);
58  ~Server();
59 
60  void open();
61  void close();
62  virtual void queuePacket(ENetPacket *packet, int clientID, uint8_t channelID) override;
63  virtual bool sendPacket( packet::Packet* packet ) override { return packet->send( static_cast<Host*>(this) ); }
64  void update(const Clock& time);
65  virtual void printRTT() override;
66  int getClientCount() { return this->clientIDs_.size(); }
67  std::string getServerName() { return this->serverName_; }
68 
69  protected:
70  void updateGamestate();
71  private:
72  virtual bool isServer_() override { return true; }
73  unsigned int playerID() { return 0; }
74 
75  virtual void addPeer(uint32_t peerID) override;
76  virtual void removePeer(uint32_t peerID) override;
77  virtual void processPacket(packet::Packet* packet) override;
78 
79  bool createClient(int clientID);
80  void disconnectClient( uint32_t clientID );
81  bool sendGameStates();
82  bool sendObjectDeletes();
83  bool isValidTarget(unsigned int targetID);
84  virtual void doSendChat(const std::string& message, unsigned int sourceID, unsigned int targetID) override;
85  virtual void doReceiveChat(const std::string& message, unsigned int sourceID, unsigned int targetID) override;
86  void syncClassid(unsigned int clientID);
87 
89  std::deque<packet::Packet*> packetQueue_;
90  std::vector<uint32_t> clientIDs_;
92  };
93 
94 
95 
96 
97 }
98 
99 #endif /* _Server_H__ */
float timeSinceLastUpdate_
Definition: Server.h:88
Shared library macros, enums, constants and forward declarations for the network library ...
Definition: ServerConnection.h:49
unsigned int playerID()
Definition: Server.h:73
Shared library macros, enums, constants and forward declarations for the core library ...
::std::string string
Definition: gtest-port.h:756
virtual bool sendPacket(packet::Packet *packet) override
Definition: Server.h:63
std::string serverName_
Definition: Server.h:91
Output level, used for messages directed to the user (e.g. "Press any key to continue") ...
Definition: OutputDefinitions.h:89
virtual bool isServer_() override
Definition: Server.h:72
std::string getServerName()
Definition: Server.h:67
Definition: LANDiscoverable.h:38
int getClientCount()
Definition: Server.h:66
Die Wagnis Klasse hat die folgenden Aufgaben:
Definition: ApplicationPaths.cc:66
#define _NetworkExport
Definition: NetworkPrereqs.h:59
Shared library macros, enums, constants and forward declarations for the util library ...
Definition: Packet.h:61
This class is the root class of the network module for a server.
Definition: Server.h:52
virtual bool send(orxonox::Host *host)
Send the Packet.
Definition: Packet.cc:135
Simple real time clock based on Ogre::Timer.
Definition: Clock.h:57
Definition: WANDiscoverable.h:39
std::vector< uint32_t > clientIDs_
Definition: Server.h:90
std::deque< packet::Packet * > packetQueue_
Definition: Server.h:89
ENet packet structure.
Definition: enet.h:147
Base class of Server and Client This is the Base class of the Server and Client classes.
Definition: Host.h:52