Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

source: code/branches/FICN/src/network/Server.cc @ 422

Last change on this file since 422 was 422, checked in by scheusso, 17 years ago

extended GameStateManager

File size: 2.5 KB
Line 
1//
2// C++ Implementation: Server
3//
4// Description:
5//
6//
7// Author:  Oliver Scheuss, (C) 2007
8//
9// Copyright: See COPYING file that comes with this distribution
10//
11//
12
13
14#include "Server.h"
15
16namespace network{
17
18  /**
19   * Constructor for default values (bindaddress is set to ENET_HOST_ANY
20   *
21   */
22  Server::Server(){
23    connection = ConnectionManager();
24    gamestates = GameStateManager();
25    packet_gen = PacketGenerator();
26  }
27
28  /**
29   * Constructor
30   * @param port Port to listen on
31   * @param bindAddress Address to listen on
32   */
33  Server::Server(int port, std::string bindAddress){
34    connection = ConnectionManager(port, bindAddress);
35    gamestates = GameStateManager();
36    packet_gen = PacketGenerator();
37  }
38
39  /**
40   * Constructor
41   * @param port Port to listen on
42   * @param bindAddress Address to listen on
43   */
44  Server::Server(int port, const char *bindAddress){
45    connection = ConnectionManager(port, bindAddress);
46    gamestates = GameStateManager();
47    packet_gen = PacketGenerator();
48  }
49 
50  /**
51   * This function opens the server by creating the listener thread
52   */
53  void Server::open(){
54    connection.createListener();
55    return;
56  }
57 
58  /**
59   * This function closes the server
60   */
61  void Server::close(){
62    connection.quitListener();
63    return;
64  }
65 
66  /**
67   * This function sends out a message to all clients
68   * @param msg message
69   * @return true/false
70   */
71  bool Server::sendMSG(std::string msg){
72    ENetPacket *packet = packet_gen.chatMessage(msg.c_str());
73    connection.addPacketAll(packet);
74    return connection.sendPackets();
75  }
76  /**
77   * This function sends out a message to all clients
78   * @param msg message
79   * @return true/false
80   */
81  bool Server::sendMSG(const char *msg){
82    ENetPacket *packet = packet_gen.chatMessage(msg);
83    connection.addPacketAll(packet);
84    return connection.sendPackets();
85  }
86 
87  /**
88   * Run this function once every tick
89   * calls processQueue and updateGamestate
90   */
91  void Server::tick(){
92    processQueue();
93    updateGamestate();
94    return;
95  }
96 
97  /**
98   * processes all the packets waiting in the queue
99   */
100  void Server::processQueue(){
101    ENetPacket *packet;
102    int clientID=-1;
103    while(!connection.queueEmpty()){
104      packet = connection.getPacket(clientID);
105      elaborate(packet, clientID);
106    }
107  }
108 
109  /**
110   * takes a new snapshot of the gamestate and sends it to the clients
111   */
112  void Server::updateGamestate(){
113    gamestates.update();
114    sendGameState();
115  }
116 
117  bool Server::sendGameState(){
118   
119  }
120 
121 
122}
Note: See TracBrowser for help on using the repository browser.