Minor tweak
This commit is contained in:
@@ -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;
|
||||
}
|
||||
@@ -20,6 +20,8 @@ public:
|
||||
NetworkPacket Peek();
|
||||
NetworkPacket Pop();
|
||||
void Flush();
|
||||
|
||||
int Size();
|
||||
private:
|
||||
friend int networkQueueThread(void*);
|
||||
void ResetMembers();
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
@@ -48,6 +48,7 @@ public:
|
||||
void Quit();
|
||||
|
||||
private:
|
||||
void HandlePacket(NetworkPacket);
|
||||
bool running = true;
|
||||
|
||||
sqlite3* database = nullptr;
|
||||
|
||||
Reference in New Issue
Block a user