Revision 236afd75 common/Transmitter.cpp

b/common/Transmitter.cpp
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
}

Also available in: Unified diff