"Received packet is out of order");
}
- if((pktType == 0 && bytes > (int)UDPC_NSFULL_HEADER_SIZE)
- | (pktType == 1 && bytes > (int)UDPC_LSFULL_HEADER_SIZE)) {
+ if(pktType == 0 && bytes > (int)UDPC_NSFULL_HEADER_SIZE) {
UDPC_PacketInfo recPktInfo = UDPC::get_empty_pinfo();
- std::memcpy(recPktInfo.data, recvBuf, bytes);
- recPktInfo.dataSize = bytes;
+ std::memcpy(recPktInfo.data + UDPC_NSFULL_HEADER_SIZE,
+ recvBuf,
+ bytes - UDPC_NSFULL_HEADER_SIZE);
+ recPktInfo.dataSize = bytes - UDPC_NSFULL_HEADER_SIZE;
recPktInfo.flags =
(isConnect ? 0x1 : 0)
| (isPing ? 0x2 : 0)
recPktInfo.receiver.addr = in6addr_loopback;
recPktInfo.sender.port = ntohs(receivedData.sin6_port);
recPktInfo.receiver.port = ntohs(socketInfo.sin6_port);
+ recPktInfo.rtt = durationToMS(iter->second.rtt);
+
+ receivedPkts.push(recPktInfo);
+ } else if(pktType == 1 && bytes > (int)UDPC_LSFULL_HEADER_SIZE) {
+ UDPC_PacketInfo recPktInfo = UDPC::get_empty_pinfo();
+ std::memcpy(recPktInfo.data + UDPC_LSFULL_HEADER_SIZE,
+ recvBuf,
+ bytes - UDPC_LSFULL_HEADER_SIZE);
+ recPktInfo.dataSize = bytes - UDPC_LSFULL_HEADER_SIZE;
+ recPktInfo.flags =
+ (isConnect ? 0x1 : 0)
+ | (isPing ? 0x2 : 0)
+ | (isNotRecChecked ? 0x4 : 0)
+ | (isResending ? 0x8 : 0);
+ recPktInfo.sender.addr = receivedData.sin6_addr;
+ recPktInfo.receiver.addr = in6addr_loopback;
+ recPktInfo.sender.port = ntohs(receivedData.sin6_port);
+ recPktInfo.receiver.port = ntohs(socketInfo.sin6_port);
+ recPktInfo.rtt = durationToMS(iter->second.rtt);
receivedPkts.push(recPktInfo);
} else {
/ (float)std::decay_t<decltype(duration)>::period::den;
}
+uint16_t UDPC::durationToMS(const std::chrono::steady_clock::duration& duration) {
+ return std::chrono::duration_cast<std::chrono::milliseconds>(duration).count();
+}
+
float UDPC::timePointsToFSec(
const std::chrono::steady_clock::time_point& older,
const std::chrono::steady_clock::time_point& newer) {
{0}, // data (array)
0, // flags
0, // dataSize
+ 0, // rtt
{ // sender
{0}, // ipv6 addr
0, // scope_id
}
do {
received = UDPC_get_received(context, &size);
+// printf("Received data size = %u\n", received.dataSize);
if(received.dataSize == sizeof(unsigned int)) {
if((received.flags & 0x8) != 0) {
temp2 = ntohl(*((unsigned int*)received.data));
printf("Got out of order, data = %u\n", temp2);
}
+// printf("Got rtt %u\n", received.rtt);
}
} while (size > 0);
}