blob: ec6e109cb5229cb3e6b5568e6c177283031440ee [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 <optional>
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(std::optional<int> min_bitrate_bps,
std::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_