Minor tweak
This commit is contained in:
@@ -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;
|
||||||
|
}
|
||||||
@@ -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();
|
||||||
|
|||||||
@@ -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;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -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;
|
||||||
|
|||||||
Reference in New Issue
Block a user