/* * Copyright 2016 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_ICE_TRANSPORT_INTERNAL_H_ #define P2P_BASE_ICE_TRANSPORT_INTERNAL_H_ #include <stdint.h> #include <string> #include <utility> #include <vector> #include "absl/strings/string_view.h" #include "absl/types/optional.h" #include "api/candidate.h" #include "api/rtc_error.h" #include "api/transport/enums.h" #include "p2p/base/connection.h" #include "p2p/base/packet_transport_internal.h" #include "p2p/base/port.h" #include "p2p/base/stun_dictionary.h" #include "p2p/base/transport_description.h" #include "rtc_base/network_constants.h" #include "rtc_base/system/rtc_export.h" #include "rtc_base/third_party/sigslot/sigslot.h" #include "rtc_base/time_utils.h" namespace cricket { struct IceTransportStats { … }; Candidates; enum IceConnectionState { … }; // TODO(deadbeef): Unify with PeerConnectionInterface::IceConnectionState // once /talk/ and /webrtc/ are combined, and also switch to ENUM_NAME naming // style. enum IceGatheringState { … }; enum ContinualGatheringPolicy { … }; // ICE Nomination mode. enum class NominationMode { … }; // Utility method that checks if various required Candidate fields are filled in // and contain valid values. If conditions are not met, an RTCError with the // appropriated error number and description is returned. If the configuration // is valid RTCError::OK() is returned. webrtc::RTCError VerifyCandidate(const Candidate& cand); // Runs through a list of cricket::Candidate instances and calls VerifyCandidate // for each one, stopping on the first error encounted and returning that error // value if so. On success returns RTCError::OK(). webrtc::RTCError VerifyCandidates(const Candidates& candidates); // Information about ICE configuration. // TODO(deadbeef): Use absl::optional to represent unset values, instead of // -1. // // TODO(bugs.webrtc.org/15609): Define a public API for this. struct RTC_EXPORT IceConfig { … }; // TODO(zhihuang): Replace this with // PeerConnectionInterface::IceConnectionState. enum class IceTransportState { … }; // IceTransportInternal is an internal abstract class that does ICE. // Once the public interface is supported, // (https://www.w3.org/TR/webrtc/#rtcicetransport) // the IceTransportInterface will be split from this class. // // TODO(bugs.webrtc.org/15609): Define a public API for this. class RTC_EXPORT IceTransportInternal : public rtc::PacketTransportInternal { … }; } // namespace cricket #endif // P2P_BASE_ICE_TRANSPORT_INTERNAL_H_