| 7 |
7 |
|
| 8 |
8 |
Transmitter::Transmitter(QString host, quint16 port):
|
| 9 |
9 |
socket(), relayHost(host), relayPort(port), resendTimeoutMs(RESEND_TIMEOUT),
|
| 10 |
|
resendCounter(0), autoPing(NULL)
|
|
10 |
resendCounter(0), autoPing(NULL),
|
|
11 |
payloadSent(0), payloadRecv(0), totalSent(0), totalRecv(0), rateTimer(), rateTime()
|
| 11 |
12 |
{
|
| 12 |
13 |
qDebug() << "in" << __FUNCTION__ << ", connecting to host:" << host << ", port:" << port;
|
| 13 |
14 |
|
| ... | ... | |
| 72 |
73 |
this, SLOT(readPendingDatagrams()));
|
| 73 |
74 |
connect(&socket, SIGNAL(error(QAbstractSocket::SocketError)),
|
| 74 |
75 |
this, SLOT(printError(QAbstractSocket::SocketError)));
|
|
76 |
|
|
77 |
|
|
78 |
// Start RX/TX timers
|
|
79 |
rateTimer.start(1000);
|
|
80 |
rateTime.start();
|
|
81 |
connect(&rateTimer, SIGNAL(timeout()),
|
|
82 |
this, SLOT(updateRate()));
|
|
83 |
|
| 75 |
84 |
}
|
| 76 |
85 |
|
| 77 |
86 |
|
| ... | ... | |
| 220 |
229 |
|
| 221 |
230 |
printData(msg->data());
|
| 222 |
231 |
|
| 223 |
|
socket.writeDatagram(*msg->data(), relayHost, relayPort);
|
|
232 |
int tx = socket.writeDatagram(*msg->data(), relayHost, relayPort);
|
|
233 |
if (tx == -1) {
|
|
234 |
qWarning() << "Failed to writeDatagram:" << socket.errorString();
|
|
235 |
} else {
|
|
236 |
payloadSent += tx;
|
|
237 |
totalSent += tx + 28; // UDP + IPv4 headers.
|
|
238 |
}
|
|
239 |
|
| 224 |
240 |
|
| 225 |
241 |
// If not a high priority package, all is done
|
| 226 |
242 |
if (!msg->isHighPriority()) {
|
| ... | ... | |
| 308 |
324 |
|
| 309 |
325 |
datagram.resize(socket.pendingDatagramSize());
|
| 310 |
326 |
|
| 311 |
|
socket.readDatagram(datagram.data(), datagram.size(), &sender, &senderPort);
|
| 312 |
|
|
|
327 |
int rx = socket.readDatagram(datagram.data(), datagram.size(), &sender, &senderPort);
|
|
328 |
if (rx == -1) {
|
|
329 |
qWarning() << "Failed to readDatagram:" << socket.errorString();
|
|
330 |
}
|
|
331 |
|
|
332 |
payloadRecv += rx;
|
|
333 |
totalRecv += rx + 28; // UDP + IPv4 headers
|
|
334 |
|
| 313 |
335 |
qDebug() << "Sender:" << sender.toString() << ", port:" << senderPort;
|
| 314 |
336 |
printData(&datagram);
|
| 315 |
337 |
|
| ... | ... | |
| 552 |
574 |
// Emit the enable/disable signal
|
| 553 |
575 |
emit(value(type, val));
|
| 554 |
576 |
}
|
|
577 |
|
|
578 |
|
|
579 |
|
|
580 |
void Transmitter::updateRate(void)
|
|
581 |
{
|
|
582 |
|
|
583 |
// Time in ms since last update
|
|
584 |
int elapsedMs = rateTime.restart();
|
|
585 |
|
|
586 |
// Bytes received per second on average since last update
|
|
587 |
int payloadRx = (int)(payloadRecv / (elapsedMs/(double)1000));
|
|
588 |
payloadRecv = 0;
|
|
589 |
int totalRx = (int)(totalRecv / (elapsedMs/(double)1000));
|
|
590 |
totalRecv = 0;
|
|
591 |
|
|
592 |
// Bytes sent per second on average since last update
|
|
593 |
int payloadTx = (int)(payloadSent / (elapsedMs/(double)1000));
|
|
594 |
payloadSent = 0;
|
|
595 |
int totalTx = (int)(totalSent / (elapsedMs/(double)1000));
|
|
596 |
totalSent = 0;
|
|
597 |
|
|
598 |
emit(networkRate(payloadRx, totalRx, payloadTx, totalTx));
|
|
599 |
}
|