[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