2025-01-12 18:08:57 +01:00
|
|
|
#include "comms/PacketServer.h"
|
|
|
|
|
#include "util/SharedQueue.h"
|
2024-04-17 20:21:48 +02:00
|
|
|
#include <assert.h>
|
|
|
|
|
|
2025-03-11 22:03:24 +01:00
|
|
|
const uint32_t max_packet_queue_size = 300;
|
2024-04-17 20:21:48 +02:00
|
|
|
|
|
|
|
|
SharedQueue *sharedQueue = nullptr;
|
|
|
|
|
|
|
|
|
|
PacketServer *packetServer = nullptr;
|
|
|
|
|
|
|
|
|
|
PacketServer::PacketServer() : queue(nullptr) {}
|
|
|
|
|
|
2024-04-20 17:49:09 +02:00
|
|
|
PacketServer *PacketServer::init(void)
|
2024-04-17 20:21:48 +02:00
|
|
|
{
|
|
|
|
|
packetServer = new PacketServer;
|
|
|
|
|
sharedQueue = new SharedQueue;
|
|
|
|
|
packetServer->begin(sharedQueue);
|
|
|
|
|
return packetServer;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void PacketServer::begin(SharedQueue *_queue)
|
|
|
|
|
{
|
|
|
|
|
queue = _queue;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
Packet::PacketPtr PacketServer::receivePacket(void)
|
|
|
|
|
{
|
|
|
|
|
assert(queue);
|
|
|
|
|
if (queue->clientQueueSize() == 0)
|
|
|
|
|
return {nullptr};
|
|
|
|
|
return queue->serverReceive();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
bool PacketServer::sendPacket(Packet &&p)
|
|
|
|
|
{
|
|
|
|
|
assert(queue);
|
|
|
|
|
if (queue->serverQueueSize() >= max_packet_queue_size) {
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
queue->serverSend(std::move(p));
|
|
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
bool PacketServer::hasData() const
|
|
|
|
|
{
|
|
|
|
|
assert(queue);
|
|
|
|
|
return queue->clientQueueSize() > 0;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
bool PacketServer::available() const
|
|
|
|
|
{
|
|
|
|
|
assert(queue);
|
|
|
|
|
return queue->serverQueueSize() < max_packet_queue_size;
|
|
|
|
|
}
|