Implemented better testing and fixed skipepd frames
This commit is contained in:
@@ -95,6 +95,12 @@ public:
|
||||
/** Default maximum payload size (bytes, excluding 17-byte header). */
|
||||
static const uint32 UDPS_CLIENT_DEFAULT_MAX_PAYLOAD = 1400u;
|
||||
|
||||
/** Default OS UDP receive socket buffer size (bytes). The Linux default
|
||||
* (rmem_default, typically ~208 KiB) is easily overrun by high-throughput
|
||||
* sources (e.g. multi-hundred-KiB bursts every few ms), causing silent
|
||||
* kernel-level datagram drops. 4 MiB gives generous burst headroom. */
|
||||
static const uint32 UDPS_CLIENT_DEFAULT_RECV_BUFFER = 4194304u; // 4 MiB
|
||||
|
||||
UDPSClient();
|
||||
virtual ~UDPSClient();
|
||||
|
||||
@@ -111,6 +117,7 @@ public:
|
||||
* - MaxPayloadSize (uint32) Max payload bytes per datagram, excluding header. Default 1400.
|
||||
* - CPUMask (uint32) CPU affinity mask for the receive thread. Default 0xFFFFFFFF.
|
||||
* - StackSize (uint32) Stack size for the receive thread. Default 65536.
|
||||
* - RecvBufferSize (uint32) OS UDP receive socket buffer size (bytes). Default 4 MiB.
|
||||
*/
|
||||
bool Initialise(StructuredDataI &data);
|
||||
|
||||
@@ -165,6 +172,9 @@ private:
|
||||
bool ConnectUnicast();
|
||||
bool ConnectMulticast();
|
||||
|
||||
/** Set the OS receive buffer size (SO_RCVBUF) on a UDP socket's raw handle. */
|
||||
void SetRecvBufferSize(BasicUDPSocket &sock);
|
||||
|
||||
void ProcessDatagram(const uint8 *buf, uint32 size);
|
||||
/** Read one full UDPS frame (header + payload) from the TCP control socket. */
|
||||
bool ReceiveTCPFrame();
|
||||
@@ -188,6 +198,7 @@ private:
|
||||
uint32 maxPayloadSize;
|
||||
uint32 cpuMask;
|
||||
uint32 stackSize;
|
||||
uint32 recvBufferSize;
|
||||
|
||||
// -------------------------------------------------------------------------
|
||||
// Runtime state
|
||||
|
||||
Reference in New Issue
Block a user