Skip to content
GitLab
Projects
Groups
Snippets
Help
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
PRRT
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
37
Issues
37
List
Boards
Labels
Service Desk
Milestones
Merge Requests
1
Merge Requests
1
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Operations
Operations
Incidents
Environments
Packages & Registries
Packages & Registries
Container Registry
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
LARN
PRRT
Commits
4c2bedbc
Commit
4c2bedbc
authored
Mar 21, 2018
by
Andreas Schmidt
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Call OnAck for all ACKs.
* Expose delivered variable.
parent
5bb63d08
Pipeline
#2113
failed with stages
in 21 seconds
Changes
7
Pipelines
1
Hide whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
22 additions
and
13 deletions
+22
-13
prrt/cprrt.pxd
prrt/cprrt.pxd
+1
-0
prrt/proto/channelStateInformation.c
prrt/proto/channelStateInformation.c
+0
-4
prrt/proto/processes/feedbackReceiver.c
prrt/proto/processes/feedbackReceiver.c
+7
-4
prrt/proto/receiver.c
prrt/proto/receiver.c
+1
-4
prrt/proto/socket.c
prrt/proto/socket.c
+6
-1
prrt/proto/socket.h
prrt/proto/socket.h
+1
-0
prrt/prrt.pyx
prrt/prrt.pyx
+6
-0
No files found.
prrt/cprrt.pxd
View file @
4c2bedbc
...
...
@@ -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
)
...
...
prrt/proto/channelStateInformation.c
View file @
4c2bedbc
...
...
@@ -81,8 +81,4 @@ prrtPacketLossRate_t PrrtChannelStateInformation_get_plr(PrrtChannelStateInforma
prrtDeliveryRate_t
PrrtChannelStateInformation_get_delivery_rate
(
PrrtChannelStateInformation
*
csi
)
{
return
csi
->
deliveryRate
;
}
bool
PrrtChannelStateInformation_get_app_limited
(
PrrtChannelStateInformation
*
csi
)
{
return
csi
->
appLimited
;
}
\ No newline at end of file
prrt/proto/processes/feedbackReceiver.c
View file @
4c2bedbc
...
...
@@ -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
);
}
...
...
prrt/proto/receiver.c
View file @
4c2bedbc
...
...
@@ -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:
...
...
prrt/proto/socket.c
View file @
4c2bedbc
...
...
@@ -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
;
}
prrt/proto/socket.h
View file @
4c2bedbc
...
...
@@ -148,6 +148,7 @@ uint32_t PrrtSocket_get_inflight(PrrtSocket *s);
uint32_t
PrrtSocket_get_pacing_rate
(
PrrtSocket
*
s
);
prrtByteCount_t
PrrtSocket_get_send_quantum
(
PrrtSocket
*
s
);
prrtByteCount_t
PrrtSocket_get_pipe
(
PrrtSocket
*
s
);
prrtByteCount_t
PrrtSocket_get_delivered
(
PrrtSocket
*
s
);
#endif // PRRT_SOCKET_H
prrt/prrt.pyx
View file @
4c2bedbc
...
...
@@ -253,6 +253,12 @@ cdef class PrrtSocket:
raise
Exception
(
"Not a sender."
)
return
cprrt
.
PrrtSocket_get_pipe
(
self
.
_c_socket
)
property
bbr_delivered
:
def
__get__
(
self
):
if
not
self
.
isSender
:
raise
Exception
(
"Not a sender."
)
return
cprrt
.
PrrtSocket_get_delivered
(
self
.
_c_socket
)
property
app_limited
:
def
__get__
(
self
):
if
not
self
.
isSender
:
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment