<?% config.freshness.reviewed = '2021-05-07' %?>
<?% config.freshness.owner = 'hta' %?>

# PeerConnection and friends

The PeerConnection is the C++-level implementation of the Javascript
object "RTCPeerConnection" from the
[WEBRTC specification](https://w3c.github.io/webrtc-pc/).

Like many objects in WebRTC, the PeerConnection is used via a factory and an
observer:

 * PeerConnectionFactory, which is created via a static Create method and takes
   a PeerConnectionFactoryDependencies structure listing such things as
   non-default threads and factories for use by all PeerConnections using
   the same factory. (Using more than one factory should be avoided, since
   it takes more resources.)
 * PeerConnection itself, which is created by the method called
   PeerConnectionFactory::CreatePeerConnectionOrError, and takes a
   PeerConnectionInterface::RTCConfiguration argument, as well as
   a PeerConnectionDependencies (even more factories, plus other stuff).
 * PeerConnectionObserver (a member of PeerConnectionDependencies), which
   contains the functions that will be called on events in the PeerConnection

These types are visible in the API.

## Internal structure of PeerConnection and friends

The PeerConnection is, to a large extent, a "God object" - most things
that are done in WebRTC require a PeerConnection.

Internally, it is divided into several objects, each with its own
responsibilities, all of which are owned by the PeerConnection and live
as long as the PeerConnection:

 * SdpOfferAnswerHandler takes care of negotiating configurations with
   a remote peer, using SDP-formatted descriptions.
 * RtpTransmissionManager takes care of the lists of RtpSenders,
   RtpReceivers and RtpTransceivers that form the heart of the transmission
   service.
 * DataChannelController takes care of managing the PeerConnection's
   DataChannels and its SctpTransport.
 * JsepTransportController takes care of configuring the details of senders
   and receivers.
 * Call does management of overall call state.
 * RtcStatsCollector (and its obsolete sibling, StatsCollector) collects
   statistics from all the objects comprising the PeerConnection when
   requested.

There are a number of other smaller objects that are also owned by
the PeerConnection, but it would take too much space to describe them
all here; please consult the .h files.

PeerConnectionFactory owns an object called ConnectionContext, and a
reference to this is passed to each PeerConnection. It is referenced
via an rtc::scoped_refptr, which means that it is guaranteed to be
alive as long as either the factory or one of the PeerConnections
is using it.

