summaryrefslogtreecommitdiffstats
path: root/pacman-c++/server.cpp
diff options
context:
space:
mode:
authormanuel <manuel@mausz.at>2011-04-13 17:41:28 +0200
committermanuel <manuel@mausz.at>2011-04-13 17:41:28 +0200
commit3d20638fa8e295271ce38953ad1c657d9275bd99 (patch)
tree66cc9f2c3cc1e8772cb99b27b0c20ec8067ff80f /pacman-c++/server.cpp
parent2c351a8bccdfe0fe9ad0ccb4dba5e15ef23b4c0c (diff)
downloadfoop-3d20638fa8e295271ce38953ad1c657d9275bd99.tar.gz
foop-3d20638fa8e295271ce38953ad1c657d9275bd99.tar.bz2
foop-3d20638fa8e295271ce38953ad1c657d9275bd99.zip
some speed improvments regarding protobuf
Diffstat (limited to 'pacman-c++/server.cpp')
-rw-r--r--pacman-c++/server.cpp17
1 files changed, 7 insertions, 10 deletions
diff --git a/pacman-c++/server.cpp b/pacman-c++/server.cpp
index b1877ad..51dcc24 100644
--- a/pacman-c++/server.cpp
+++ b/pacman-c++/server.cpp
@@ -153,8 +153,8 @@ void Server::waitForClientConnections()
153 // server must stay alive as long as sockets (qt parent mem mechanism) 153 // server must stay alive as long as sockets (qt parent mem mechanism)
154 tcpSrv->listen(QHostAddress::Any, Constants::Networking::port); 154 tcpSrv->listen(QHostAddress::Any, Constants::Networking::port);
155 155
156 ProtoBuf::WhoAmI packet;
156#define SINGLE 157#define SINGLE
157
158#ifdef SINGLE 158#ifdef SINGLE
159 for (unsigned int i = 0; i < 1; ++i) 159 for (unsigned int i = 0; i < 1; ++i)
160 { 160 {
@@ -172,8 +172,6 @@ void Server::waitForClientConnections()
172 Color::Color color = Color::order[i]; 172 Color::Color color = Color::order[i];
173 m_clientConnections[color] = socket; 173 m_clientConnections[color] = socket;
174 /* notify player of color */ 174 /* notify player of color */
175 //TODO: allocate + reuse packet
176 ProtoBuf::WhoAmI packet;
177 packet.set_color(color); 175 packet.set_color(color);
178 Util::sendPacket(packet, socket); 176 Util::sendPacket(packet, socket);
179 177
@@ -183,21 +181,21 @@ void Server::waitForClientConnections()
183 181
184void Server::sendUpdate(Transmission::map_t map) 182void Server::sendUpdate(Transmission::map_t map)
185{ 183{
186 ProtoBuf::MapUpdate packet; 184 m_updatepacket.Clear();
187 185
188 for (unsigned int x = 0; x < Constants::map_size.width; ++x) 186 for (unsigned int x = 0; x < Constants::map_size.width; ++x)
189 { 187 {
190 for (unsigned int y = 0; y < Constants::map_size.height; ++y) 188 for (unsigned int y = 0; y < Constants::map_size.height; ++y)
191 packet.add_field(map[x][y]); 189 m_updatepacket.add_field(map[x][y]);
192 } 190 }
193 191
194 for(unsigned i = 0; Color::order[i] != Color::none; ++i) 192 for(unsigned i = 0; Color::order[i] != Color::none; ++i)
195 { 193 {
196 packet.add_round_points(m_actors.value(Color::order[i])->getRoundPoints()); 194 m_updatepacket.add_round_points(m_actors.value(Color::order[i])->getRoundPoints());
197 packet.add_game_points(m_actors.value(Color::order[i])->getGamePoints()); 195 m_updatepacket.add_game_points(m_actors.value(Color::order[i])->getGamePoints());
198 } 196 }
199 197
200 QSharedPointer<QByteArray> data = Util::createPacket(packet); 198 QSharedPointer<QByteArray> data = Util::createPacket(m_updatepacket);
201 foreach(QTcpSocket *socket, m_clientConnections) 199 foreach(QTcpSocket *socket, m_clientConnections)
202 { 200 {
203 if (!Util::sendPacket(data.data(), socket)) 201 if (!Util::sendPacket(data.data(), socket))
@@ -210,6 +208,7 @@ void Server::sendUpdate(Transmission::map_t map)
210 208
211void Server::keyPressUpdate() 209void Server::keyPressUpdate()
212{ 210{
211 ProtoBuf::KeyPressUpdate packet;
213 QMapIterator<Color::Color, QTcpSocket *> i(m_clientConnections); 212 QMapIterator<Color::Color, QTcpSocket *> i(m_clientConnections);
214 while (i.hasNext()) 213 while (i.hasNext())
215 { 214 {
@@ -220,8 +219,6 @@ void Server::keyPressUpdate()
220 while (socket->bytesAvailable() > (qint64)sizeof(qint64)) 219 while (socket->bytesAvailable() > (qint64)sizeof(qint64))
221 { 220 {
222 QSharedPointer<QByteArray> data = Util::receivePacket(socket); 221 QSharedPointer<QByteArray> data = Util::receivePacket(socket);
223 //TODO: allocate + reuse packet
224 ProtoBuf::KeyPressUpdate packet;
225 bool worked = packet.ParseFromArray(data->data(), data->size()); 222 bool worked = packet.ParseFromArray(data->data(), data->size());
226 Q_ASSERT(worked); 223 Q_ASSERT(worked);
227 Q_UNUSED(worked); 224 Q_UNUSED(worked);