blob: 8fe5bf5f5ec94281f0cd5f016f53d435b1a74fcd [file] [log] [blame]
Harald Alvestrandf01bd6c2020-10-23 13:30:461/*
2 * Copyright 2020 The WebRTC project authors. All Rights Reserved.
3 *
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.
9 */
10
11#ifndef PC_SDP_STATE_PROVIDER_H_
12#define PC_SDP_STATE_PROVIDER_H_
13
14#include <string>
15
16#include "api/jsep.h"
17#include "api/peer_connection_interface.h"
18
19namespace webrtc {
20
21// This interface provides access to the state of an SDP offer/answer
22// negotiation.
23//
24// All the functions are const, so using this interface serves as
25// assurance that the user is not modifying the state.
26class SdpStateProvider {
27 public:
28 virtual ~SdpStateProvider() {}
29
30 virtual PeerConnectionInterface::SignalingState signaling_state() const = 0;
31
32 virtual const SessionDescriptionInterface* local_description() const = 0;
33 virtual const SessionDescriptionInterface* remote_description() const = 0;
34 virtual const SessionDescriptionInterface* current_local_description()
35 const = 0;
36 virtual const SessionDescriptionInterface* current_remote_description()
37 const = 0;
38 virtual const SessionDescriptionInterface* pending_local_description()
39 const = 0;
40 virtual const SessionDescriptionInterface* pending_remote_description()
41 const = 0;
42
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;
Florent Castelli8037fc62024-08-29 13:00:4048 virtual std::optional<rtc::SSLRole> GetDtlsRole(
Harald Alvestrandf01bd6c2020-10-23 13:30:4649 const std::string& mid) const = 0;
50};
51
52} // namespace webrtc
53
54#endif // PC_SDP_STATE_PROVIDER_H_