dcsctp: Add public API for BufferedAmountLow
This adds native support for the RTCDataChannel properties: https://developer.mozilla.org/en-US/docs/Web/API/RTCDataChannel/bufferedAmount https://developer.mozilla.org/en-US/docs/Web/API/RTCDataChannel/bufferedAmountLowThreshold And the RTCDataChannel event: https://developer.mozilla.org/en-US/docs/Web/API/RTCDataChannel/onbufferedamountlow The old callback, NotifyOutgoingMessageBufferEmpty, is deprecated as it didn't work very well. It will not be triggered and will be removed as soon as all users of it are gone. There is a new callback, OnTotalBufferedAmountLow, that serves the same purpose but also allows setting an arbitrary limit when it should be triggered (See DcSctpOptions::total_buffered_amount_low_threshold). Bug: webrtc:12794 Change-Id: Ic1c92f174eff8a1acda0b5fd3dcc45bd1cfa2704 Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/219691 Commit-Queue: Victor Boivie <boivie@webrtc.org> Reviewed-by: Harald Alvestrand <hta@webrtc.org> Cr-Commit-Position: refs/heads/master@{#34144}
This commit is contained in:

committed by
WebRTC LUCI CQ

parent
bd9031bf22
commit
236ac50628
@ -170,9 +170,11 @@ DcSctpSocket::DcSctpSocket(absl::string_view log_prefix,
|
||||
send_queue_(
|
||||
log_prefix_,
|
||||
options_.max_send_buffer_size,
|
||||
[](StreamID stream_id) {},
|
||||
/*total_buffered_amount_low_threshold=*/0,
|
||||
[]() {}) {}
|
||||
[this](StreamID stream_id) {
|
||||
callbacks_.OnBufferedAmountLow(stream_id);
|
||||
},
|
||||
options_.total_buffered_amount_low_threshold,
|
||||
[this]() { callbacks_.OnTotalBufferedAmountLow(); }) {}
|
||||
|
||||
std::string DcSctpSocket::log_prefix() const {
|
||||
return log_prefix_ + "[" + std::string(ToString(state_)) + "] ";
|
||||
@ -442,6 +444,19 @@ void DcSctpSocket::SetMaxMessageSize(size_t max_message_size) {
|
||||
options_.max_message_size = max_message_size;
|
||||
}
|
||||
|
||||
size_t DcSctpSocket::buffered_amount(StreamID stream_id) const {
|
||||
return send_queue_.buffered_amount(stream_id);
|
||||
}
|
||||
|
||||
size_t DcSctpSocket::buffered_amount_low_threshold(StreamID stream_id) const {
|
||||
return send_queue_.buffered_amount_low_threshold(stream_id);
|
||||
}
|
||||
|
||||
void DcSctpSocket::SetBufferedAmountLowThreshold(StreamID stream_id,
|
||||
size_t bytes) {
|
||||
send_queue_.SetBufferedAmountLowThreshold(stream_id, bytes);
|
||||
}
|
||||
|
||||
void DcSctpSocket::MaybeSendShutdownOnPacketReceived(const SctpPacket& packet) {
|
||||
if (state_ == State::kShutdownSent) {
|
||||
bool has_data_chunk =
|
||||
|
Reference in New Issue
Block a user