Calculate port tx duration and send to controller
This commit only includes server side changes plus the .proto changes. Client side UI changes are still pending.
This commit is contained in:
parent
7374c74b95
commit
329469dd6e
@ -289,6 +289,8 @@ message StreamStats {
|
||||
required PortId port_id = 1;
|
||||
required StreamGuid stream_guid = 2;
|
||||
|
||||
optional double tx_duration = 3; // in seconds
|
||||
|
||||
optional uint64 rx_pkts = 11;
|
||||
optional uint64 rx_bytes = 12;
|
||||
optional uint64 tx_pkts = 13;
|
||||
|
@ -705,6 +705,8 @@ void AbstractPort::streamStats(uint guid, OstProto::StreamStatsList *stats)
|
||||
s->mutable_stream_guid()->set_id(guid);
|
||||
s->mutable_port_id()->set_id(id());
|
||||
|
||||
s->set_tx_duration(lastTransmitDuration());
|
||||
|
||||
s->set_tx_pkts(sst.tx_pkts);
|
||||
s->set_tx_bytes(sst.tx_bytes);
|
||||
s->set_rx_pkts(sst.rx_pkts);
|
||||
@ -716,6 +718,7 @@ void AbstractPort::streamStatsAll(OstProto::StreamStatsList *stats)
|
||||
{
|
||||
// FIXME: change input param to a non-OstProto type and/or have
|
||||
// a getFirst/Next like API?
|
||||
double txDur = lastTransmitDuration();
|
||||
StreamStatsIterator i(streamStats_);
|
||||
while (i.hasNext())
|
||||
{
|
||||
@ -726,6 +729,8 @@ void AbstractPort::streamStatsAll(OstProto::StreamStatsList *stats)
|
||||
s->mutable_stream_guid()->set_id(i.key());
|
||||
s->mutable_port_id()->set_id(id());
|
||||
|
||||
s->set_tx_duration(txDur);
|
||||
|
||||
s->set_tx_pkts(sst.tx_pkts);
|
||||
s->set_tx_bytes(sst.tx_bytes);
|
||||
s->set_rx_pkts(sst.rx_pkts);
|
||||
|
@ -110,6 +110,7 @@ public:
|
||||
virtual void startTransmit() = 0;
|
||||
virtual void stopTransmit() = 0;
|
||||
virtual bool isTransmitOn() = 0;
|
||||
virtual double lastTransmitDuration() = 0;
|
||||
|
||||
virtual void startCapture() = 0;
|
||||
virtual void stopCapture() = 0;
|
||||
|
@ -68,6 +68,9 @@ public:
|
||||
}
|
||||
virtual void stopTransmit() { transmitter_->stop(); }
|
||||
virtual bool isTransmitOn() { return transmitter_->isRunning(); }
|
||||
virtual double lastTransmitDuration() {
|
||||
return transmitter_->lastTxDuration();
|
||||
}
|
||||
|
||||
virtual void startCapture() { capturer_->start(); }
|
||||
virtual void stopCapture() { capturer_->stop(); }
|
||||
|
@ -107,6 +107,10 @@ bool PcapTransmitter::isRunning()
|
||||
{
|
||||
return txThread_.isRunning();
|
||||
}
|
||||
double PcapTransmitter::lastTxDuration()
|
||||
{
|
||||
return txThread_.lastTxDuration();
|
||||
}
|
||||
|
||||
void PcapTransmitter::updateTxThreadStreamStats()
|
||||
{
|
||||
|
@ -49,6 +49,7 @@ public:
|
||||
void start();
|
||||
void stop();
|
||||
bool isRunning();
|
||||
double lastTxDuration();
|
||||
private slots:
|
||||
void updateTxThreadStreamStats();
|
||||
private:
|
||||
|
@ -243,6 +243,7 @@ void PcapTxThread::run()
|
||||
const int kSyncTransmit = 1;
|
||||
int i;
|
||||
long overHead = 0; // overHead should be negative or zero
|
||||
TimeStamp startTime, endTime;
|
||||
|
||||
qDebug("packetSequenceList_.size = %d", packetSequenceList_.size());
|
||||
if (packetSequenceList_.size() <= 0)
|
||||
@ -260,6 +261,7 @@ void PcapTxThread::run()
|
||||
|
||||
lastStats_ = *stats_; // used for stream stats
|
||||
|
||||
getTimeStamp(&startTime);
|
||||
state_ = kRunning;
|
||||
i = 0;
|
||||
while (i < packetSequenceList_.size())
|
||||
@ -348,6 +350,10 @@ _restart:
|
||||
}
|
||||
|
||||
_exit:
|
||||
getTimeStamp(&endTime);
|
||||
lastTxDuration_ = udiffTimeStamp(&startTime, &endTime)/1e6;
|
||||
qDebug("Tx duration = %fs", lastTxDuration_);
|
||||
|
||||
if (trackStreamStats_)
|
||||
updateStreamStats();
|
||||
|
||||
@ -388,6 +394,11 @@ bool PcapTxThread::isRunning()
|
||||
return (state_ == kRunning);
|
||||
}
|
||||
|
||||
double PcapTxThread::lastTxDuration()
|
||||
{
|
||||
return lastTxDuration_;
|
||||
}
|
||||
|
||||
int PcapTxThread::sendQueueTransmit(pcap_t *p,
|
||||
pcap_send_queue *queue, long &overHead, int sync)
|
||||
{
|
||||
|
@ -55,6 +55,7 @@ public:
|
||||
void start();
|
||||
void stop();
|
||||
bool isRunning();
|
||||
double lastTxDuration();
|
||||
|
||||
private:
|
||||
enum State
|
||||
@ -92,6 +93,8 @@ private:
|
||||
StatsTuple *stats_;
|
||||
StatsTuple lastStats_;
|
||||
StreamStats streamStats_;
|
||||
|
||||
double lastTxDuration_{0.0}; // in secs
|
||||
};
|
||||
|
||||
#endif
|
||||
|
Loading…
Reference in New Issue
Block a user