Skip to content

Commit

Permalink
Bug 1806510 - Vendor libwebrtc from 094ee30504
Browse files Browse the repository at this point in the history
Upstream commit: https://webrtc.googlesource.com/src/+/094ee30504a6a26d7bc9f0968bfc2c20bfd9874d
    Add an active ICE controller interface (#2/n)

    This interface will be implemented by "new" ICE controllers that actively manage the connection used by the transport.

    Bug: webrtc:14367, webrtc:14131
    Change-Id: I0858884b0decd2a17ae9ca8617a043a085c61d54
    Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/271291
    Commit-Queue: Sameer Vijaykar <samvi@google.com>
    Reviewed-by: Jonas Oreland <jonaso@webrtc.org>
    Cr-Commit-Position: refs/heads/main@{#38066}
  • Loading branch information
Drekabi committed Jan 9, 2023
1 parent 890a980 commit eed614f
Show file tree
Hide file tree
Showing 4 changed files with 90 additions and 0 deletions.
3 changes: 3 additions & 0 deletions third_party/libwebrtc/README.moz-ff-commit
Original file line number Diff line number Diff line change
Expand Up @@ -17757,3 +17757,6 @@ eab4ab6637
# MOZ_LIBWEBRTC_SRC=/Users/danielbaker/moz-libwebrtc MOZ_LIBWEBRTC_COMMIT=mozpatches bash dom/media/webrtc/third_party_build/fast-forward-libwebrtc.sh
# base of lastest vendoring
0a426f8fcf
# MOZ_LIBWEBRTC_SRC=/Users/danielbaker/moz-libwebrtc MOZ_LIBWEBRTC_COMMIT=mozpatches bash dom/media/webrtc/third_party_build/fast-forward-libwebrtc.sh
# base of lastest vendoring
094ee30504
2 changes: 2 additions & 0 deletions third_party/libwebrtc/README.mozilla
Original file line number Diff line number Diff line change
Expand Up @@ -11860,3 +11860,5 @@ libwebrtc updated from /Users/danielbaker/moz-libwebrtc commit mozpatches on 202
libwebrtc updated from /Users/danielbaker/moz-libwebrtc commit mozpatches on 2023-01-09T22:32:55.601228.
# ./mach python dom/media/webrtc/third_party_build/vendor-libwebrtc.py --from-local /Users/danielbaker/moz-libwebrtc --commit mozpatches libwebrtc
libwebrtc updated from /Users/danielbaker/moz-libwebrtc commit mozpatches on 2023-01-09T22:34:05.441119.
# ./mach python dom/media/webrtc/third_party_build/vendor-libwebrtc.py --from-local /Users/danielbaker/moz-libwebrtc --commit mozpatches libwebrtc
libwebrtc updated from /Users/danielbaker/moz-libwebrtc commit mozpatches on 2023-01-09T22:35:15.324509.
1 change: 1 addition & 0 deletions third_party/libwebrtc/p2p/BUILD.gn
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@ group("p2p") {
rtc_library("rtc_p2p") {
visibility = [ "*" ]
sources = [
"base/active_ice_controller_interface.h",
"base/async_stun_tcp_socket.cc",
"base/async_stun_tcp_socket.h",
"base/basic_async_resolver_factory.cc",
Expand Down
84 changes: 84 additions & 0 deletions third_party/libwebrtc/p2p/base/active_ice_controller_interface.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,84 @@
/*
* Copyright 2022 The WebRTC Project Authors. All rights reserved.
*
* Use of this source code is governed by a BSD-style license
* that can be found in the LICENSE file in the root of the source
* tree. An additional intellectual property rights grant can be found
* in the file PATENTS. All contributing project authors may
* be found in the AUTHORS file in the root of the source tree.
*/

#ifndef P2P_BASE_ACTIVE_ICE_CONTROLLER_INTERFACE_H_
#define P2P_BASE_ACTIVE_ICE_CONTROLLER_INTERFACE_H_

#include "absl/types/optional.h"
#include "api/array_view.h"
#include "p2p/base/connection.h"
#include "p2p/base/ice_switch_reason.h"
#include "p2p/base/ice_transport_internal.h"
#include "p2p/base/transport_description.h"

namespace cricket {

// ActiveIceControllerInterface defines the methods for a module that actively
// manages the connection used by an ICE transport.
//
// An active ICE controller receives updates from the ICE transport when
// - the connections state is mutated
// - a new connection should be selected as a result of an external event (eg.
// a different connection nominated by the remote peer)
//
// The active ICE controller takes the appropriate decisions and requests the
// ICE agent to perform the necessary actions through the IceAgentInterface.
class ActiveIceControllerInterface {
public:
virtual ~ActiveIceControllerInterface() = default;

// Sets the current ICE configuration.
virtual void SetIceConfig(const IceConfig& config) = 0;

// Called when a new connection is added to the ICE transport.
virtual void OnConnectionAdded(const Connection* connection) = 0;

// Called when the transport switches that connection in active use.
virtual void OnConnectionSwitched(const Connection* connection) = 0;

// Called when a connection is destroyed.
virtual void OnConnectionDestroyed(const Connection* connection) = 0;

// Called when a STUN ping has been sent on a connection. This does not
// indicate that a STUN response has been received.
virtual void OnConnectionPinged(const Connection* connection) = 0;

// Called when one of the following changes for a connection.
// - rtt estimate
// - write state
// - receiving
// - connected
// - nominated
virtual void OnConnectionUpdated(const Connection* connection) = 0;

// Compute "STUN_ATTR_USE_CANDIDATE" for a STUN ping on the given connection.
virtual bool GetUseCandidateAttribute(const Connection* connection,
NominationMode mode,
IceMode remote_ice_mode) const = 0;

// Called to enque a request to pick and switch to the best available
// connection.
virtual void OnSortAndSwitchRequest(IceSwitchReason reason) = 0;

// Called to pick and switch to the best available connection immediately.
virtual void OnImmediateSortAndSwitchRequest(IceSwitchReason reason) = 0;

// Called to switch to the given connection immediately without checking for
// the best available connection.
virtual bool OnImmediateSwitchRequest(IceSwitchReason reason,
const Connection* selected) = 0;

// Only for unit tests
virtual const Connection* FindNextPingableConnection() = 0;
};

} // namespace cricket

#endif // P2P_BASE_ACTIVE_ICE_CONTROLLER_INTERFACE_H_

0 comments on commit eed614f

Please sign in to comment.