This reverts commit 6b143c1c0686519bc9d73223c1350cee286c8d78. Reason for revert: Relanding with updated expectations for SctpTransport::Information based on TransceiverStateSurfacer in Chromium. Original change's description: > Revert "Fix unsynchronized access to mid_to_transport_ in JsepTransportController" > > This reverts commit 6cd405850467683cf10d05028ea0f644a68a91a4. > > Reason for revert: Breaks WebRTC Chromium FYI Bots > > First failure: > https://ci.chromium.org/p/chromium/builders/webrtc.fyi/WebRTC%20Chromium%20FYI%20Android%20Tests%20%28dbg%29%20%28L%20Nexus5%29/1925 > > Failed tests: > WebRtcDataBrowserTest.CallWithSctpDataAndMedia > WebRtcDataBrowserTest.CallWithSctpDataOnly > > Original change's description: > > Fix unsynchronized access to mid_to_transport_ in JsepTransportController > > > > * Added several thread checks to JTC to help with programmer errors. > > * Avoid a few Invokes() to the network thread here and there such > > as for fetching sctp transport name for getStats(). The transport > > name is now cached when it changes on the network thread. > > * JsepTransportController instances now get deleted on the network > > thread rather than on the signaling thread + issuing an Invoke() > > in the dtor. > > * Moved some thread hops from JTC over to PC which is where the problem > > exists and also (imho) makes it easier to see where hops happen in > > the PC code. > > * The sctp transport is now started asynchronously when we push down the > > media description. > > * PeerConnection proxy calls GetSctpTransport directly on the network > > thread instead of to the signaling thread + blocking on the network > > thread. > > * The above changes simplified things for webrtc::SctpTransport which > > allowed for removing locking from that class and delete some code. > > > > Bug: webrtc:9987, webrtc:12445 > > Change-Id: Ic89a9426e314e1b93c81751d4f732f05fa448fbc > > Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/205620 > > Commit-Queue: Tommi <tommi@webrtc.org> > > Reviewed-by: Harald Alvestrand <hta@webrtc.org> > > Cr-Commit-Position: refs/heads/master@{#33191} > > TBR=tommi@webrtc.org,hta@webrtc.org > > Change-Id: I7b2913d5133807589461105cf07eff3e9bb7157e > No-Presubmit: true > No-Tree-Checks: true > No-Try: true > Bug: webrtc:9987 > Bug: webrtc:12445 > Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/206466 > Reviewed-by: Guido Urdaneta <guidou@webrtc.org> > Commit-Queue: Guido Urdaneta <guidou@webrtc.org> > Cr-Commit-Position: refs/heads/master@{#33204} TBR=tommi@webrtc.org,hta@webrtc.org,guidou@webrtc.org # Not skipping CQ checks because this is a reland. Bug: webrtc:9987 Bug: webrtc:12445 Change-Id: Icb205cbac493ed3b881d71ea3af4fb9018701bf4 Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/206560 Reviewed-by: Tommi <tommi@webrtc.org> Reviewed-by: Guido Urdaneta <guidou@webrtc.org> Commit-Queue: Tommi <tommi@webrtc.org> Cr-Commit-Position: refs/heads/master@{#33219}
How to write code in the api/ directory
Mostly, just follow the regular style guide, but:
- Note that
api/code is not exempt from the “.hand.ccfiles come in pairs” rule, so if you declare something inapi/path/to/foo.h, it should be defined inapi/path/to/foo.cc. - Headers in
api/should, if possible, not#includeheaders outsideapi/. It’s not always possible to avoid this, but be aware that it adds to a small mountain of technical debt that we’re trying to shrink. .ccfiles inapi/, on the other hand, are free to#includeheaders outsideapi/.
That is, the preferred way for api/ code to access non-api/ code is to call
it from a .cc file, so that users of our API headers won’t transitively
#include non-public headers.
For headers in api/ that need to refer to non-public types, forward
declarations are often a lesser evil than including non-public header files. The
usual rules still apply, though.
.cc files in api/ should preferably be kept reasonably small. If a
substantial implementation is needed, consider putting it with our non-public
code, and just call it from the api/ .cc file.