| Index: webrtc/p2p/base/p2ptransportchannel.h
|
| diff --git a/webrtc/p2p/base/p2ptransportchannel.h b/webrtc/p2p/base/p2ptransportchannel.h
|
| index 2327b2d4771b776e3086fc484e12841257e6160f..e538dc2c9739f466ac603daeceb1e353a46a9df6 100644
|
| --- a/webrtc/p2p/base/p2ptransportchannel.h
|
| +++ b/webrtc/p2p/base/p2ptransportchannel.h
|
| @@ -26,14 +26,14 @@
|
| #include <string>
|
| #include <vector>
|
|
|
| -#include "webrtc/base/asyncpacketsocket.h"
|
| #include "webrtc/base/constructormagic.h"
|
| -#include "webrtc/base/sigslot.h"
|
| #include "webrtc/p2p/base/candidate.h"
|
| #include "webrtc/p2p/base/candidatepairinterface.h"
|
| -#include "webrtc/p2p/base/icetransportinternal.h"
|
| #include "webrtc/p2p/base/portallocator.h"
|
| #include "webrtc/p2p/base/portinterface.h"
|
| +#include "webrtc/p2p/base/transportchannelimpl.h"
|
| +#include "webrtc/base/asyncpacketsocket.h"
|
| +#include "webrtc/base/sigslot.h"
|
|
|
| namespace cricket {
|
|
|
| @@ -60,7 +60,7 @@
|
|
|
| // P2PTransportChannel manages the candidates and connection process to keep
|
| // two P2P clients connected to each other.
|
| -class P2PTransportChannel : public IceTransportInternal,
|
| +class P2PTransportChannel : public TransportChannelImpl,
|
| public rtc::MessageHandler {
|
| public:
|
| P2PTransportChannel(const std::string& transport_name,
|
| @@ -69,11 +69,7 @@
|
| virtual ~P2PTransportChannel();
|
|
|
| // From TransportChannelImpl:
|
| - IceTransportState GetState() const override;
|
| - const std::string& transport_name() const override { return transport_name_; }
|
| - int component() const override { return component_; }
|
| - bool writable() const override { return writable_; }
|
| - bool receiving() const override { return receiving_; }
|
| + TransportChannelState GetState() const override;
|
| void SetIceRole(IceRole role) override;
|
| IceRole GetIceRole() const override { return ice_role_; }
|
| void SetIceTiebreaker(uint64_t tiebreaker) override;
|
| @@ -122,6 +118,57 @@
|
|
|
| IceMode remote_ice_mode() const { return remote_ice_mode_; }
|
|
|
| + // DTLS methods.
|
| + bool IsDtlsActive() const override { return false; }
|
| +
|
| + // Default implementation.
|
| + bool GetSslRole(rtc::SSLRole* role) const override { return false; }
|
| +
|
| + bool SetSslRole(rtc::SSLRole role) override { return false; }
|
| +
|
| + // Set up the ciphers to use for DTLS-SRTP.
|
| + bool SetSrtpCryptoSuites(const std::vector<int>& ciphers) override {
|
| + return false;
|
| + }
|
| +
|
| + // Find out which DTLS-SRTP cipher was negotiated.
|
| + bool GetSrtpCryptoSuite(int* cipher) override { return false; }
|
| +
|
| + // Find out which DTLS cipher was negotiated.
|
| + bool GetSslCipherSuite(int* cipher) override { return false; }
|
| +
|
| + // Returns null because the channel is not encrypted by default.
|
| + rtc::scoped_refptr<rtc::RTCCertificate> GetLocalCertificate() const override {
|
| + return nullptr;
|
| + }
|
| +
|
| + std::unique_ptr<rtc::SSLCertificate> GetRemoteSSLCertificate()
|
| + const override {
|
| + return nullptr;
|
| + }
|
| +
|
| + // Allows key material to be extracted for external encryption.
|
| + bool ExportKeyingMaterial(const std::string& label,
|
| + const uint8_t* context,
|
| + size_t context_len,
|
| + bool use_context,
|
| + uint8_t* result,
|
| + size_t result_len) override {
|
| + return false;
|
| + }
|
| +
|
| + bool SetLocalCertificate(
|
| + const rtc::scoped_refptr<rtc::RTCCertificate>& certificate) override {
|
| + return false;
|
| + }
|
| +
|
| + // Set DTLS Remote fingerprint. Must be after local identity set.
|
| + bool SetRemoteFingerprint(const std::string& digest_alg,
|
| + const uint8_t* digest,
|
| + size_t digest_len) override {
|
| + return false;
|
| + }
|
| +
|
| void PruneAllPorts();
|
| int receiving_timeout() const { return config_.receiving_timeout; }
|
| int check_receiving_interval() const { return check_receiving_interval_; }
|
| @@ -144,15 +191,6 @@
|
| // Public for unit tests.
|
| const std::vector<RemoteCandidate>& remote_candidates() const {
|
| return remote_candidates_;
|
| - }
|
| -
|
| - std::string ToString() const {
|
| - const char RECEIVING_ABBREV[2] = {'_', 'R'};
|
| - const char WRITABLE_ABBREV[2] = {'_', 'W'};
|
| - std::stringstream ss;
|
| - ss << "Channel[" << transport_name_ << "|" << component_ << "|"
|
| - << RECEIVING_ABBREV[receiving_] << WRITABLE_ABBREV[writable_] << "]";
|
| - return ss.str();
|
| }
|
|
|
| private:
|
| @@ -201,7 +239,7 @@
|
| void UpdateState();
|
| void HandleAllTimedOut();
|
| void MaybeStopPortAllocatorSessions();
|
| - IceTransportState ComputeState() const;
|
| + TransportChannelState ComputeState() const;
|
|
|
| Connection* GetBestConnectionOnNetwork(rtc::Network* network) const;
|
| bool CreateConnections(const Candidate& remote_candidate,
|
| @@ -309,13 +347,6 @@
|
| : static_cast<uint32_t>(remote_ice_parameters_.size() - 1);
|
| }
|
|
|
| - // Sets the writable state, signaling if necessary.
|
| - void set_writable(bool writable);
|
| - // Sets the receiving state, signaling if necessary.
|
| - void set_receiving(bool receiving);
|
| -
|
| - std::string transport_name_;
|
| - int component_;
|
| PortAllocator* allocator_;
|
| rtc::Thread* network_thread_;
|
| bool incoming_only_;
|
| @@ -356,15 +387,13 @@
|
| int check_receiving_interval_;
|
| int64_t last_ping_sent_ms_ = 0;
|
| int weak_ping_interval_ = WEAK_PING_INTERVAL;
|
| - IceTransportState state_ = IceTransportState::STATE_INIT;
|
| + TransportChannelState state_ = TransportChannelState::STATE_INIT;
|
| IceConfig config_;
|
| int last_sent_packet_id_ = -1; // -1 indicates no packet was sent before.
|
| bool started_pinging_ = false;
|
| // The value put in the "nomination" attribute for the next nominated
|
| // connection. A zero-value indicates the connection will not be nominated.
|
| uint32_t nomination_ = 0;
|
| - bool receiving_ = false;
|
| - bool writable_ = false;
|
|
|
| webrtc::MetricsObserverInterface* metrics_observer_ = nullptr;
|
|
|
|
|