blob: 94e35909cd743f351f07d3883c04d8cb9c0347c0 [file] [log] [blame]
// Copyright 2020 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef REMOTING_PROTOCOL_PEER_CONNECTION_CONTROLS_H_
#define REMOTING_PROTOCOL_PEER_CONNECTION_CONTROLS_H_
#include "third_party/abseil-cpp/absl/types/optional.h"
namespace remoting::protocol {
// Interface for changing peer connection parameters after the connection is
// established.
class PeerConnectionControls {
public:
virtual ~PeerConnectionControls() = default;
// Sets preferred min and max bitrates for the peer connection. nullopt means
// no preference.
virtual void SetPreferredBitrates(absl::optional<int> min_bitrate_bps,
absl::optional<int> max_bitrate_bps) = 0;
// Performs an ICE restart. This causes the host to initiate a new SDP
// offer/answer exchange, and restarts the ICE gathering/connection sequence.
// This can be used to re-establish a connection, without needing to
// re-authenticate the user.
virtual void RequestIceRestart() = 0;
// Requests a new SDP offer/answer exchange, without restarting ICE. This can
// be used to change SDP configuration (for example, switching to a different
// codec), without needing a full reconnection.
virtual void RequestSdpRestart() = 0;
};
} // namespace remoting::protocol
#endif // REMOTING_PROTOCOL_PEER_CONNECTION_CONTROLS_H_