summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLAN-TW <lantw44@gmail.com>2013-12-22 18:51:37 +0800
committerLAN-TW <lantw44@gmail.com>2013-12-22 18:51:37 +0800
commite31ea27563b6307fead8d64d96e946adf7e010d9 (patch)
tree8ac924d11b7596599c73144b105c8f3430f3cb6a
parent54d53e95ba3ff4a746dfeb91e93272d8c03b5d77 (diff)
downloadcn2013-e31ea27563b6307fead8d64d96e946adf7e010d9.tar.gz
cn2013-e31ea27563b6307fead8d64d96e946adf7e010d9.tar.zst
cn2013-e31ea27563b6307fead8d64d96e946adf7e010d9.zip
HW2; 修正重傳方法與評分方法
-rw-r--r--hw2/ump-sched.c12
1 files changed, 5 insertions, 7 deletions
diff --git a/hw2/ump-sched.c b/hw2/ump-sched.c
index 7aa9cc4..bee8b32 100644
--- a/hw2/ump-sched.c
+++ b/hw2/ump-sched.c
@@ -431,12 +431,8 @@ ssize_t ump_sched_send (UmpSched* sched, void* buf, size_t count) {
"agent[%d]: # sent %d # score %d #",
j, sched->conn[j].sent, sched->conn[j].score);
}
- if (sched->pkt_valid[i]) {
- i++;
- continue;
- }
- xalarm (3, 0);
+ xalarm (1, 500000);
UmpPkt pkt_new_struct;
UmpPkt* pkt_new = &pkt_new_struct;
@@ -457,6 +453,7 @@ ssize_t ump_sched_send (UmpSched* sched, void* buf, size_t count) {
ump_pkt_get_data_offset (pkt) + pkt->app_data_len, 0,
SOCKADDR (&(sched->conn[selected].addr)),
sched->conn[selected].addr_len);
+ sched->pkt_map[i] = selected;
}
continue;
}
@@ -472,8 +469,9 @@ ssize_t ump_sched_send (UmpSched* sched, void* buf, size_t count) {
}
uint32_t seq_rel = ump_pkt_get_seq_num (pkt_new) - sched->seq_start;
if (seq_rel >= 0 && seq_rel < sched->pkt_count) {
- i++;
- sched->pkt_valid[seq_rel] = true;
+ if (seq_rel == i) {
+ i++;
+ }
}
}