commit | fe53fec24e02d2d644220f913c3f9ae596bbb2d9 | [log] [tgz] |
---|---|---|
author | Tommi <tommi@webrtc.org> | Tue Apr 04 11:48:34 2023 |
committer | WebRTC LUCI CQ <webrtc-scoped@luci-project-accounts.iam.gserviceaccount.com> | Tue Apr 04 16:49:17 2023 |
tree | 4161c70de3992ea16bd68a6913f28c25d75865fc | |
parent | 8481f6358e46f05c9b85874694c692c9f8555dd2 [diff] |
[DataChannel] Send and receive packets on the network thread. This updates sctp channels, including work that happens between the data channel controller and the transport, to run on the network thread. Previously all network traffic related to data channels was routed through the signaling thread before going to either the network thread or the caller's thread (e.g. js thread in chrome). Now the calls can go straight from the network thread to the JS thread with enabling a special flag on the observer (see below) and similarly calls to send data, involve 2 threads instead of 3. * Custom data channel observer adapter implementation that maintains compatibility with existing observer implementations in that notifications are delivered on the signaling thread. The adapter can be explicitly disabled for implementations that want to optimize the callback path and promise to not block the network thread. * Remove the signaling thread copy of data channels in the controller. * Remove several PostTask operations that were needed to keep things in sync (but the need has gone away). * Update tests for the controller to consistently call TeardownDataChannelTransport_n to match with production. * Update stats collectors (current and legacy) to fetch the data channel stats on the network thread where they're maintained. * Remove the AsyncChannelCloseTeardown test since the async teardown step has gone away. * Remove `sid_s` in the channel code since we only need the network state now. * For the custom observer support (with and without data adapter) and maintain compatibility with existing implementations, added a new proxy macro that allows an implementation to selectively provide its own implementation without being proxied. This is used for registering/unregistering a data channel observer. * Update the data channel proxy to map most methods to the network thread, avoiding the interim jump to the signaling thread. * Update a plethora of thread checkers from signaling to network. Bug: webrtc:11547 Change-Id: Ib4cff1482e31c46008e187189a79e967389bc518 Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/299142 Commit-Queue: Tomas Gunnarsson <tommi@webrtc.org> Reviewed-by: Henrik Boström <hbos@webrtc.org> Cr-Commit-Position: refs/heads/main@{#39760}
WebRTC is a free, open software project that provides browsers and mobile applications with Real-Time Communications (RTC) capabilities via simple APIs. The WebRTC components have been optimized to best serve this purpose.
Our mission: To enable rich, high-quality RTC applications to be developed for the browser, mobile platforms, and IoT devices, and allow them all to communicate via a common set of protocols.
The WebRTC initiative is a project supported by Google, Mozilla and Opera, amongst others.
See here for instructions on how to get started developing with the native code.
Authoritative list of directories that contain the native API header files.