Commit 4c2bedbc authored by Andreas Schmidt's avatar Andreas Schmidt
Browse files

Call OnAck for all ACKs.

* Expose delivered variable.
parent 5bb63d08
Loading
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -157,6 +157,7 @@ cdef extern from "proto/socket.h":
    uint32_t PrrtSocket_get_pacing_rate(PrrtSocket *s)
    uint32_t PrrtSocket_get_send_quantum(PrrtSocket *s)
    uint32_t PrrtSocket_get_pipe(PrrtSocket *s)
    uint32_t PrrtSocket_get_delivered(PrrtSocket *s)


    bint PrrtSocket_get_app_limited(PrrtSocket *socket)
+0 −4
Original line number Diff line number Diff line
@@ -82,7 +82,3 @@ prrtPacketLossRate_t PrrtChannelStateInformation_get_plr(PrrtChannelStateInforma
prrtDeliveryRate_t PrrtChannelStateInformation_get_delivery_rate(PrrtChannelStateInformation *csi) {
    return csi->deliveryRate;
}
 No newline at end of file

bool PrrtChannelStateInformation_get_app_limited(PrrtChannelStateInformation *csi) {
    return csi->appLimited;
}
 No newline at end of file
+7 −4
Original line number Diff line number Diff line
@@ -39,17 +39,20 @@ static void handle_feedback(PrrtSocket *prrtSocket, const size_t length)

    PrrtPacketFeedbackPayload *feedbackPayload = (PrrtPacketFeedbackPayload *) prrtPacket->payload;
    prrtTimestamp_t forwardTripTimestamp = feedbackPayload->forwardTripTimestamp_us;
    PrrtChannelStateInformation_update_rtprop(prrtSocket->receiver->csi,
                                              (prrtTimedelta_t) (receiveTime - forwardTripTimestamp));
    PrrtChannelStateInformation_update_plr(prrtSocket->receiver->csi, feedbackPayload->erasureCount, feedbackPayload->packetCount);

    bool valid_sample = PrrtReceiver_updateAndGenerateRateSample(prrtSocket->receiver, feedbackPayload->ackSequenceNumber, feedbackPayload->ackPacketType, receiveTime);

    bool valid_sample = PrrtReceiver_updateAndGenerateRateSample(prrtSocket->receiver, feedbackPayload->ackSequenceNumber, feedbackPayload->ackPacketType, receiveTime);
    if(prrtSocket->receiver->rateSample != NULL) {
        BBR_OnACK(prrtSocket->receiver->bbr, prrtSocket->receiver->csi, prrtSocket->receiver->rateSample, prrtSocket->receiver->packetTracking);
    }
    if(valid_sample) {
        PrrtChannelStateInformation_update_delivery_rate(prrtSocket->receiver->csi, prrtPacket, prrtSocket->receiver->rateSample);
    }
    PrrtChannelStateInformation_update_app_limited(prrtSocket->receiver->csi, prrtSocket->receiver->rateSample->is_app_limited);

    PrrtChannelStateInformation_update_rtprop(prrtSocket->receiver->csi,
                                              (prrtTimedelta_t) (receiveTime - forwardTripTimestamp));
    PrrtChannelStateInformation_update_plr(prrtSocket->receiver->csi, feedbackPayload->erasureCount, feedbackPayload->packetCount);

    error:
    if(prrtPacket != NULL) { PrrtPacket_destroy(prrtPacket); }
+1 −4
Original line number Diff line number Diff line
@@ -129,7 +129,7 @@ void PrrtReceiver_on_application_write(PrrtReceiver *receiver, uint32_t send_que

bool PrrtReceiver_generateRateSample(PrrtRateSample *rateSample, PrrtPacketTracking *packetTracking) {
    /* Clear app-limited field */
    if (packetTracking->app_limited && packetTracking->delivered > packetTracking->app_limited)
    if (packetTracking->app_limited > 0 && packetTracking->delivered > packetTracking->app_limited)
        packetTracking->app_limited = 0;

    if (rateSample->prior_time == 0) {
@@ -183,9 +183,6 @@ bool PrrtReceiver_updateAndGenerateRateSample(PrrtReceiver *recv, prrtSequenceNu
    check(pthread_cond_broadcast(&recv->pipeNotFullCv) == 0, "Signal failed.");

    recv->packetTracking->prior_inflight = recv->packetTracking->pipe;
    if(recv->rateSample != NULL && result) {
        BBR_OnACK(recv->bbr, recv->csi, recv->rateSample, recv->packetTracking);
    }
    return result;

    error:
+6 −1
Original line number Diff line number Diff line
@@ -640,6 +640,11 @@ prrtByteCount_t PrrtSocket_get_pipe(PrrtSocket *s) {
    return s->receiver->packetTracking->pipe;
};

prrtByteCount_t PrrtSocket_get_delivered(PrrtSocket *s) {
    return s->receiver->packetTracking->delivered;
};


float PrrtSocket_get_pacing_gain(PrrtSocket *s) {
    return BBR_getPacingGain(s->receiver->bbr);
}
@@ -653,5 +658,5 @@ uint32_t PrrtSocket_get_cycle_index(PrrtSocket *s) {
}

bool PrrtSocket_get_app_limited(PrrtSocket *s) {
    return PrrtChannelStateInformation_get_app_limited(s->receiver->csi);
    return s->receiver->rateSample->is_app_limited;
}
Loading