[Sumover-dev] [svn commit] r4265 - vic/branches/cc/cc
sumover-dev at cs.ucl.ac.uk
sumover-dev at cs.ucl.ac.uk
Tue Aug 12 17:53:18 BST 2008
Author: soohyunc
Date: Tue Aug 12 17:53:18 2008
New Revision: 4265
Modified:
vic/branches/cc/cc/tfwc_rcvr.cpp
vic/branches/cc/cc/tfwc_rcvr.h
vic/branches/cc/cc/tfwc_sndr.cpp
vic/branches/cc/cc/tfwc_sndr.h
Log:
start commiting the main TFWC algorith stuffs
o proto-type of TfwcRcvr
(setting AckVec function implemented)
o To-do: AckVec trim stuffs need to be added later (not critical at the moment)
Modified: vic/branches/cc/cc/tfwc_rcvr.cpp
==============================================================================
--- vic/branches/cc/cc/tfwc_rcvr.cpp (original)
+++ vic/branches/cc/cc/tfwc_rcvr.cpp Tue Aug 12 17:53:18 2008
@@ -45,38 +45,36 @@
#include "tfwc_rcvr.h"
TfwcRcvr::TfwcRcvr() :
- seqno_(0)
+ currseq_(0),
+ prevseq_(0)
{}
void TfwcRcvr::tfwc_rcvr_recv(u_int16_t seqno,
u_int16_t ackofack, u_int32_t ts)
{
- seqno_ = seqno;
+ debug_msg("received seqno: %d\n", seqno);
+
+ // parse the current received seqno, ackofack, and timestamp
+ currseq_ = seqno;
ackofack_ = ackofack;
- ts_echo_ = ts;
- debug_msg("received seqno: %d\n", seqno_);
-}
+ ts_echo_ = ts;
-void TfwcRcvr::set_received_seqno(u_int16_t seqno, u_int16_t lastseq)
-{
- seqno_ = seqno;
- lastseq_ = lastseq;
- ackvec_manager(seqno_, lastseq_);
-}
+ // there is no packet loss
+ if (currseq_ == prevseq_ + 1) {
+ // set next bit to 1
+ SET_BIT_VEC(tfwcAV, 1);
+ }
+ // we have one or more packet loss
+ else {
+ // number of packet loss
+ int cnt = currseq_ - prevseq_ - 1;
-void TfwcRcvr::ackvec_manager(u_int16_t seqno, u_int16_t lastseq)
-{
- // set next ackvec bit vector
- for (int i = lastseq+1; i <= seqno; i++) {
- SET_BIT_VEC (tfwcAV, 1);
+ // set next bit to 0
+ for (int i = 0; i < cnt; i++) {
+ SET_BIT_VEC(tfwcAV, 0);
+ }
}
- // printing tfwcAV
- bool isThere;
- debug_msg("XXX received ackvec:");
- for (int i = lastseq+1; i <= seqno; i++) {
- isThere = SEE_BIT_VEC (tfwcAV, i, seqno);
- printf(" %d... %s ", seqno, isThere ? "Ok" : "Nok");
- }
- printf("\n");
+ // set this seqno to the prevseq before exit
+ prevseq_ = currseq_;
}
Modified: vic/branches/cc/cc/tfwc_rcvr.h
==============================================================================
--- vic/branches/cc/cc/tfwc_rcvr.h (original)
+++ vic/branches/cc/cc/tfwc_rcvr.h Tue Aug 12 17:53:18 2008
@@ -39,26 +39,24 @@
#include "tfwc_sndr.h"
// set AckVec bitmap
-#define SET_BIT_VEC(ackvec_, bit) (ackvec_ = ((ackvec_ << 1) | bit))
+//#define SET_BIT_VEC(ackvec_, bit) (ackvec_ = ((ackvec_ << 1) | bit))
// see AckVec bitmap
-#define SEE_BIT_VEC(ackvec_, ix, seqno) ((1 << (seqno - ix)) & ackvec_)
+//#define SEE_BIT_VEC(ackvec_, ix, seqno) ((1 << (seqno - ix)) & ackvec_)
class TfwcRcvr {
public:
TfwcRcvr();
void tfwc_rcvr_recv(u_int16_t seqno, u_int16_t ackofack, u_int32_t ts);
- void set_received_seqno(u_int16_t seqno, u_int16_t lastseq);
protected:
inline u_int32_t tfwc_rcvr_getvec() { return tfwcAV; }
inline u_int32_t tfwc_rcvr_ts_echo() { return ts_echo_; }
u_int32_t tfwcAV; // AckVec (bit vector)
- u_int16_t seqno_; // received RTP packet seqno
+ u_int16_t currseq_; // current sequence number
+ u_int16_t prevseq_; // previous sequence number
u_int16_t ackofack_; // ackofack
- u_int16_t lastseq_; // last RTP packet seqno
private:
- void ackvec_manager(u_int16_t seqno, u_int16_t latseq);
u_int32_t ts_echo_; // for time stamp echoing
};
Modified: vic/branches/cc/cc/tfwc_sndr.cpp
==============================================================================
--- vic/branches/cc/cc/tfwc_sndr.cpp (original)
+++ vic/branches/cc/cc/tfwc_sndr.cpp Tue Aug 12 17:53:18 2008
@@ -47,7 +47,8 @@
#define DUPACKS 3 // simulating TCP's 3 dupacks
TfwcSndr::TfwcSndr() :
- seqno_(0)
+ seqno_(0),
+ aoa_(0)
{
u_int32_t marginvec_ = 0xe0000000;
}
Modified: vic/branches/cc/cc/tfwc_sndr.h
==============================================================================
--- vic/branches/cc/cc/tfwc_sndr.h (original)
+++ vic/branches/cc/cc/tfwc_sndr.h Tue Aug 12 17:53:18 2008
@@ -36,6 +36,12 @@
#ifndef vic_tfwc_sndr_h
#define vic_tfwc_sndr_h
+// set AckVec bitmap
+#define SET_BIT_VEC(ackvec_, bit) (ackvec_ = ((ackvec_ << 1) | bit))
+
+// see AckVec bitmap
+#define SEE_BIT_VEC(ackvec_, ix, seqno) ((1 << (seqno - ix)) & ackvec_)
+
class TfwcSndr {
public:
TfwcSndr();
More information about the Sumover-dev
mailing list