[Sumover-dev] [svn commit] r4867 - vic/branches/cc/rtp
sumover-dev at cs.ucl.ac.uk
sumover-dev at cs.ucl.ac.uk
Tue Jul 13 14:23:29 BST 2010
Author: soohyunc
Date: Tue Jul 13 14:23:28 2010
New Revision: 4867
Modified:
vic/branches/cc/rtp/transmitter.cpp
Log:
TFRC send rate control by inter-packet gap calculated by TFRC algo.
Modified: vic/branches/cc/rtp/transmitter.cpp
==============================================================================
--- vic/branches/cc/rtp/transmitter.cpp (original)
+++ vic/branches/cc/rtp/transmitter.cpp Tue Jul 13 14:23:28 2010
@@ -235,6 +235,10 @@
{
// int cc = pb->iov[0].iov_len + pb->iov[1].iov_len;
int cc = pb->len;
+
+ if (is_tfrc())
+ return ( cc/tfrc_sndr_.xrate() );
+ else
return (8 * cc / (1000. * kbps_));
}
@@ -307,7 +311,6 @@
tfrc_output(pb);
}
break;
-
//
// without congestion control
//
@@ -495,6 +498,7 @@
cc_output_banner_top("tfrc");
// move head pointer
head_ = pb->next;
+
// call Transmitter::output_data_only w/ XR reception
output_data_only(pb, XR_RECV);
cc_output_banner_bottom();
@@ -512,26 +516,37 @@
return;
}
- while ( pb != 0) {
- // move head pointer
- head_ = pb->next;
- // call Transmitter::output(pb)
- output(pb, ack_clock);
-
- if (head_ != 0) {
- pb = head_;
- } else {
- break;
- }
- }
+ // move head pointer
+ head_ = pb->next;
+ // call Transmitter::output(pb)
+ output(pb, ack_clock);
cc_output_banner_bottom();
}
void Transmitter::timeout()
{
double now = gettimeofday_secs();
- for (;;) {
- pktbuf* p = head_;
+ pktbuf* p = head_;
+
+ switch (cc_type_) {
+ case RBCC:
+ for (;;) {
+ if(p != 0) {
+ nextpkttime_ += txtime(p);
+ // call send(pktbuf *) here
+ send(p);
+ // goto sleep
+ int ms = int(1e-3 * (nextpkttime_ - now));
+ msched(ms);
+ }
+ }
+ break;
+ case WBCC:
+ // nothing to do when WBCC mode
+ break;
+ case NOCC:
+ default:
+ for (;;) {
if (p != 0) {
head_ = p->next;
nextpkttime_ += txtime(p);
@@ -546,7 +561,8 @@
busy_ = 0;
break;
}
- }
+ }
+ } // switch (cc_type_)
}
void Transmitter::flush()
More information about the Sumover-dev
mailing list