Minor tweak

This commit is contained in:
Kayne Ruse
2013-11-09 16:32:35 +11:00
parent f01463bab3
commit bf15a5d957
4 changed files with 56 additions and 4 deletions
+9
View File
@@ -108,3 +108,12 @@ void NetworkQueue::ResetMembers() {
thread = nullptr;
queue.clear();
}
int NetworkQueue::Size() {
//can't be sure if std::deque::size() is thread safe
int ret;
SDL_SemWait(lock);
ret = queue.size();
SDL_SemPost(lock);
return ret;
}
+2
View File
@@ -20,6 +20,8 @@ public:
NetworkPacket Peek();
NetworkPacket Pop();
void Flush();
int Size();
private:
friend int networkQueueThread(void*);
void ResetMembers();
+44 -4
View File
@@ -109,10 +109,13 @@ void ServerApplication::Loop() {
//debugging
SDL_Delay(1000);
NetworkPacket packet;
while(networkQueue.Peek().meta.type != NetworkPacket::Type::NONE) {
packet = networkQueue.Pop();
std::cout << packet.serverInfo.name << std::endl;
while(networkQueue.Size() > 0) {
try {
HandlePacket(networkQueue.Pop());
}
catch(std::exception& e) {
std::cerr << "Network Error: " << e.what() << std::endl;
}
};
}
@@ -123,3 +126,40 @@ void ServerApplication::Quit() {
SDLNet_Quit();
SDL_Quit();
}
void ServerApplication::HandlePacket(NetworkPacket packet) {
switch(packet.meta.type) {
case NetworkPacket::Type::PING:
//NOT USED
break;
case NetworkPacket::Type::PONG:
//NOT USED
break;
case NetworkPacket::Type::BROADCAST_REQUEST:
//
break;
// case NetworkPacket::Type::BROADCAST_RESPONSE:
// //
// break;
case NetworkPacket::Type::JOIN_REQUEST:
//
break;
// case NetworkPacket::Type::JOIN_RESPONSE:
// //
// break;
case NetworkPacket::Type::DISCONNECT:
//
break;
case NetworkPacket::Type::SYNCHRONIZE:
//
break;
//handle errors
case NetworkPacket::Type::NONE:
throw(std::runtime_error("NetworkPacket::Type::NONE encountered"));
break;
default:
throw(std::runtime_error("Unknown NetworkPacket::Type encountered"));
break;
}
}
+1
View File
@@ -48,6 +48,7 @@ public:
void Quit();
private:
void HandlePacket(NetworkPacket);
bool running = true;
sqlite3* database = nullptr;