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; thread = nullptr;
queue.clear(); 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 Peek();
NetworkPacket Pop(); NetworkPacket Pop();
void Flush(); void Flush();
int Size();
private: private:
friend int networkQueueThread(void*); friend int networkQueueThread(void*);
void ResetMembers(); void ResetMembers();
+44 -4
View File
@@ -109,10 +109,13 @@ void ServerApplication::Loop() {
//debugging //debugging
SDL_Delay(1000); SDL_Delay(1000);
NetworkPacket packet; while(networkQueue.Size() > 0) {
while(networkQueue.Peek().meta.type != NetworkPacket::Type::NONE) { try {
packet = networkQueue.Pop(); HandlePacket(networkQueue.Pop());
std::cout << packet.serverInfo.name << std::endl; }
catch(std::exception& e) {
std::cerr << "Network Error: " << e.what() << std::endl;
}
}; };
} }
@@ -123,3 +126,40 @@ void ServerApplication::Quit() {
SDLNet_Quit(); SDLNet_Quit();
SDL_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(); void Quit();
private: private:
void HandlePacket(NetworkPacket);
bool running = true; bool running = true;
sqlite3* database = nullptr; sqlite3* database = nullptr;