Fix timer bug + comment some logs
This commit is contained in:
parent
283dfd82e1
commit
c6f7199bf6
1 changed files with 10 additions and 18 deletions
|
@ -133,7 +133,7 @@ void rr_pkt_register(struct evt_core_ctx* ctx, struct evt_core_fdinfo* fdinfo,
|
||||||
url_get_port (buffer, fdinfo->url);
|
url_get_port (buffer, fdinfo->url);
|
||||||
int link_num = atoi(buffer) - 7500; // @FIXME Hardcoded
|
int link_num = atoi(buffer) - 7500; // @FIXME Hardcoded
|
||||||
|
|
||||||
printf("Selected url %s for pkt %d to be queued for delivery\n", fdinfo->url, bp->ip.ap.str.id);
|
//printf("Selected url %s for pkt %d to be queued for delivery\n", fdinfo->url, bp->ip.ap.str.id);
|
||||||
|
|
||||||
// 0. Update remote links
|
// 0. Update remote links
|
||||||
if (ring_lt(rr->recv_id_late, bp->ip.ap.str.id) && !(rr->remote_links & 1 << link_num)) {
|
if (ring_lt(rr->recv_id_late, bp->ip.ap.str.id) && !(rr->remote_links & 1 << link_num)) {
|
||||||
|
@ -198,27 +198,18 @@ void rr_deliver(struct evt_core_ctx* ctx, struct evt_core_fdinfo* fdinfo, struct
|
||||||
|
|
||||||
// 2. Get the buffer
|
// 2. Get the buffer
|
||||||
struct buffer_packet* bp = get_app_buffer (app_ctx, &dp->idx);
|
struct buffer_packet* bp = get_app_buffer (app_ctx, &dp->idx);
|
||||||
printf("Selected url %s for pkt %d to be delivered\n", fdinfo->url, bp->ip.ap.str.id);
|
//printf("Selected url %s for pkt %d to be delivered\n", fdinfo->url, bp->ip.ap.str.id);
|
||||||
|
|
||||||
// 3. We update our cursor
|
// 3. We update our cursor
|
||||||
rr->recv_id = bp->ip.ap.str.id;
|
rr->recv_id = bp->ip.ap.str.id;
|
||||||
|
|
||||||
// 4. We check that we don't have a running timeout
|
// 4. We free the buffer if it's a control packet and quit
|
||||||
// We want to keep timer until the end to allow link update on multi receive
|
|
||||||
/*int idx_real = bp->ip.ap.str.id % PACKET_BUFFER_SIZE;
|
|
||||||
if (rr->wait[idx_real].on) {
|
|
||||||
rr->wait[idx_real].on = 0;
|
|
||||||
evt_core_rm_fd (ctx, rr->wait[idx_real].timer_fd);
|
|
||||||
printf("Removed timer for packet %d\n",bp->ip.ap.str.id);
|
|
||||||
}*/
|
|
||||||
|
|
||||||
// 5. We free the buffer if it's a control packet and quit
|
|
||||||
if (bp->ip.ap.str.flags & PKT_CONTROL) {
|
if (bp->ip.ap.str.flags & PKT_CONTROL) {
|
||||||
mv_buffer_atof (app_ctx, &dp->idx);
|
mv_buffer_atof (app_ctx, &dp->idx);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
// 6. Find its target
|
// 5. Find its target
|
||||||
sprintf(url, "udp:write:127.0.0.1:%d", bp->ip.ap.str.port);
|
sprintf(url, "udp:write:127.0.0.1:%d", bp->ip.ap.str.port);
|
||||||
to_fdinfo = evt_core_get_from_url (ctx, url);
|
to_fdinfo = evt_core_get_from_url (ctx, url);
|
||||||
if (to_fdinfo == NULL) {
|
if (to_fdinfo == NULL) {
|
||||||
|
@ -227,7 +218,7 @@ void rr_deliver(struct evt_core_ctx* ctx, struct evt_core_fdinfo* fdinfo, struct
|
||||||
mv_buffer_atof (app_ctx, &dp->idx);
|
mv_buffer_atof (app_ctx, &dp->idx);
|
||||||
}
|
}
|
||||||
|
|
||||||
// 4. We move the buffer and notify the target
|
// 6. We move the buffer and notify the target
|
||||||
//mv_buffer_rtow (app_ctx, fdinfo, to_fdinfo, bp);
|
//mv_buffer_rtow (app_ctx, fdinfo, to_fdinfo, bp);
|
||||||
mv_buffer_atow (app_ctx, &dp->idx, to_fdinfo);
|
mv_buffer_atow (app_ctx, &dp->idx, to_fdinfo);
|
||||||
rr_on_udp_write(ctx, to_fdinfo);
|
rr_on_udp_write(ctx, to_fdinfo);
|
||||||
|
@ -239,7 +230,7 @@ void rr_pkt_unroll(struct evt_core_ctx* ctx, struct algo_ctx* app_ctx) {
|
||||||
struct buffer_packet* bp = NULL;
|
struct buffer_packet* bp = NULL;
|
||||||
|
|
||||||
while(1) {
|
while(1) {
|
||||||
printf("Trying to deliver %d\n", rr->recv_id+1);
|
//printf("Trying to deliver %d\n", rr->recv_id+1);
|
||||||
struct deferred_pkt* def = &rr->real[(rr->recv_id+1) % PACKET_BUFFER_SIZE];
|
struct deferred_pkt* def = &rr->real[(rr->recv_id+1) % PACKET_BUFFER_SIZE];
|
||||||
if (!def->on) break;
|
if (!def->on) break;
|
||||||
fdinfo = evt_core_get_from_fd (ctx, def->link_fd);
|
fdinfo = evt_core_get_from_fd (ctx, def->link_fd);
|
||||||
|
@ -250,7 +241,7 @@ void rr_pkt_unroll(struct evt_core_ctx* ctx, struct algo_ctx* app_ctx) {
|
||||||
}
|
}
|
||||||
|
|
||||||
rr_deliver(ctx, fdinfo, def);
|
rr_deliver(ctx, fdinfo, def);
|
||||||
printf("Delivered %d\n", rr->recv_id);
|
//printf("Delivered %d\n", rr->recv_id);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -343,7 +334,7 @@ int rr_on_udp_read(struct evt_core_ctx* ctx, struct evt_core_fdinfo* fdinfo) {
|
||||||
bp->ip.ap.str.deltat = mili_sec;
|
bp->ip.ap.str.deltat = mili_sec;
|
||||||
bp->ip.ap.str.bitfield = rr->remote_links;
|
bp->ip.ap.str.bitfield = rr->remote_links;
|
||||||
bp->ip.ap.str.prevlink = rr->current_link;
|
bp->ip.ap.str.prevlink = rr->current_link;
|
||||||
printf("Will send packet id=%d\n", bp->ip.ap.str.id);
|
//printf("Will send packet id=%d\n", bp->ip.ap.str.id);
|
||||||
|
|
||||||
rr->emit_time = curr;
|
rr->emit_time = curr;
|
||||||
rr->sent_id++;
|
rr->sent_id++;
|
||||||
|
@ -419,7 +410,7 @@ int rr_on_timer(struct evt_core_ctx* ctx, struct evt_core_fdinfo* fdinfo) {
|
||||||
struct waited_pkt* pkt = fdinfo->other;
|
struct waited_pkt* pkt = fdinfo->other;
|
||||||
pkt->on = 0;
|
pkt->on = 0;
|
||||||
if (ring_gt (pkt->id, rr->recv_id_late)) rr->recv_id_late = pkt->id;
|
if (ring_gt (pkt->id, rr->recv_id_late)) rr->recv_id_late = pkt->id;
|
||||||
if (ring_le (pkt->id, rr->recv_id)) return 1;
|
if (ring_le (pkt->id, rr->recv_id)) goto end;
|
||||||
|
|
||||||
printf("Timer reached for packet %d\n", pkt->id);
|
printf("Timer reached for packet %d\n", pkt->id);
|
||||||
|
|
||||||
|
@ -433,6 +424,7 @@ int rr_on_timer(struct evt_core_ctx* ctx, struct evt_core_fdinfo* fdinfo) {
|
||||||
rr_pkt_unroll (ctx, app_ctx);
|
rr_pkt_unroll (ctx, app_ctx);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
end:
|
||||||
evt_core_rm_fd(ctx, fdinfo->fd);
|
evt_core_rm_fd(ctx, fdinfo->fd);
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue