2 * Copyright 2020 The WebRTC project authors. All Rights Reserved.
4 * Use of this source code is governed by a BSD-style license
5 * that can be found in the LICENSE file in the root of the source
6 * tree. An additional intellectual property rights grant can be found
7 * in the file PATENTS. All contributing project authors may
8 * be found in the AUTHORS file in the root of the source tree.
11 #ifndef PC_SDP_STATE_PROVIDER_H_
12 #define PC_SDP_STATE_PROVIDER_H_
17 #include "api/peer_connection_interface.h"
21 // This interface provides access to the state of an SDP offer/answer
24 // All the functions are const, so using this interface serves as
25 // assurance that the user is not modifying the state.
26 class SdpStateProvider
{
28 virtual ~SdpStateProvider() {}
30 virtual PeerConnectionInterface::SignalingState
signaling_state() const = 0;
32 virtual const SessionDescriptionInterface
* local_description() const = 0;
33 virtual const SessionDescriptionInterface
* remote_description() const = 0;
34 virtual const SessionDescriptionInterface
* current_local_description()
36 virtual const SessionDescriptionInterface
* current_remote_description()
38 virtual const SessionDescriptionInterface
* pending_local_description()
40 virtual const SessionDescriptionInterface
* pending_remote_description()
43 // Whether an ICE restart has been asked for. Used in CreateOffer.
44 virtual bool NeedsIceRestart(const std::string
& content_name
) const = 0;
45 // Whether an ICE restart was indicated in the remote offer.
46 // Used in CreateAnswer.
47 virtual bool IceRestartPending(const std::string
& content_name
) const = 0;
48 virtual absl::optional
<rtc::SSLRole
> GetDtlsRole(
49 const std::string
& mid
) const = 0;
54 #endif // PC_SDP_STATE_PROVIDER_H_