Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(462)

Unified Diff: webrtc/p2p/base/transportcontroller.h

Issue 2553043004: Revert of Refactoring that removes P2PTransport and DtlsTransport classes. (Closed)
Patch Set: Created 4 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « webrtc/p2p/base/transportchannel.h ('k') | webrtc/p2p/base/transportcontroller.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: webrtc/p2p/base/transportcontroller.h
diff --git a/webrtc/p2p/base/transportcontroller.h b/webrtc/p2p/base/transportcontroller.h
index cdac4b6dcb5e72a08761a593b02d2f5fae9812c5..a408421ffbddeeb6b60c41adc992b906d03231c2 100644
--- a/webrtc/p2p/base/transportcontroller.h
+++ b/webrtc/p2p/base/transportcontroller.h
@@ -20,9 +20,7 @@
#include "webrtc/base/sigslot.h"
#include "webrtc/base/sslstreamadapter.h"
#include "webrtc/p2p/base/candidate.h"
-#include "webrtc/p2p/base/dtlstransportchannel.h"
-#include "webrtc/p2p/base/jseptransport.h"
-#include "webrtc/p2p/base/p2ptransportchannel.h"
+#include "webrtc/p2p/base/transport.h"
namespace rtc {
class Thread;
@@ -64,7 +62,7 @@
void SetIceConfig(const IceConfig& config);
void SetIceRole(IceRole ice_role);
- bool GetSslRole(const std::string& transport_name, rtc::SSLRole* role) const;
+ bool GetSslRole(const std::string& transport_name, rtc::SSLRole* role);
// Specifies the identity to use in this session.
// Can only be called once.
@@ -72,11 +70,10 @@
const rtc::scoped_refptr<rtc::RTCCertificate>& certificate);
bool GetLocalCertificate(
const std::string& transport_name,
- rtc::scoped_refptr<rtc::RTCCertificate>* certificate) const;
- // Caller owns returned certificate. This method mainly exists for stats
- // reporting.
+ rtc::scoped_refptr<rtc::RTCCertificate>* certificate);
+ // Caller owns returned certificate
std::unique_ptr<rtc::SSLCertificate> GetRemoteSSLCertificate(
- const std::string& transport_name) const;
+ const std::string& transport_name);
bool SetLocalTransportDescription(const std::string& transport_name,
const TransportDescription& tdesc,
ContentAction action,
@@ -92,12 +89,8 @@
const Candidates& candidates,
std::string* err);
bool RemoveRemoteCandidates(const Candidates& candidates, std::string* err);
- bool ReadyForRemoteCandidates(const std::string& transport_name) const;
- // TODO(deadbeef): GetStats isn't const because all the way down to
- // OpenSSLStreamAdapter,
- // GetSslCipherSuite and GetDtlsSrtpCryptoSuite are not const. Fix this.
+ bool ReadyForRemoteCandidates(const std::string& transport_name);
bool GetStats(const std::string& transport_name, TransportStats* stats);
- void SetMetricsObserver(webrtc::MetricsObserverInterface* metrics_observer);
// Creates a channel if it doesn't exist. Otherwise, increments a reference
// count and returns an existing channel.
@@ -112,17 +105,6 @@
void use_quic() { quic_ = true; }
bool quic() const { return quic_; }
-
- // TODO(deadbeef): Remove all for_testing methods!
- const rtc::scoped_refptr<rtc::RTCCertificate>& certificate_for_testing()
- const {
- return certificate_;
- }
- std::vector<std::string> transport_names_for_testing();
- std::vector<TransportChannelImpl*> channels_for_testing();
- TransportChannelImpl* get_channel_for_testing(
- const std::string& transport_name,
- int component);
// All of these signals are fired on the signalling thread.
@@ -146,33 +128,31 @@
sigslot::signal1<const Candidates&> SignalCandidatesRemoved;
+ // for unit test
+ const rtc::scoped_refptr<rtc::RTCCertificate>& certificate_for_testing();
+
sigslot::signal1<rtc::SSLHandshakeError> SignalDtlsHandshakeError;
+ void SetMetricsObserver(webrtc::MetricsObserverInterface* metrics_observer);
+
protected:
- // TODO(deadbeef): Get rid of these virtual methods. Used by
- // FakeTransportController currently, but FakeTransportController shouldn't
- // even be functioning by subclassing TransportController.
- virtual TransportChannelImpl* CreateIceTransportChannel_n(
- const std::string& transport_name,
- int component);
- virtual TransportChannelImpl* CreateDtlsTransportChannel_n(
- const std::string& transport_name,
- int component,
- TransportChannelImpl* ice);
+ // Protected and virtual so we can override it in unit tests.
+ virtual Transport* CreateTransport_n(const std::string& transport_name);
+
+ // For unit tests
+ const std::map<std::string, Transport*>& transports() { return transports_; }
+ Transport* GetTransport_n(const std::string& transport_name);
private:
void OnMessage(rtc::Message* pmsg) override;
- // This structure groups the DTLS and ICE channels, and helps keep track of
- // how many external objects (BaseChannels) reference each channel.
+ // It's the Transport that's currently responsible for creating/destroying
+ // channels, but the TransportController keeps track of how many external
+ // objects (BaseChannels) reference each channel.
struct RefCountedChannel {
- RefCountedChannel() = default;
- // TODO(deadbeef): Change the types of |dtls| and |ice| to
- // DtlsTransportChannelWrapper and P2PTransportChannelWrapper,
- // once TransportChannelImpl is removed.
- explicit RefCountedChannel(TransportChannelImpl* dtls,
- TransportChannelImpl* ice)
- : ice_(ice), dtls_(dtls), ref_(0) {}
+ RefCountedChannel() : impl_(nullptr), ref_(0) {}
+ explicit RefCountedChannel(TransportChannelImpl* impl)
+ : impl_(impl), ref_(0) {}
void AddRef() { ++ref_; }
void DecRef() {
@@ -181,51 +161,33 @@
}
int ref() const { return ref_; }
- // Currently, all ICE-related calls still go through this DTLS channel. But
- // that will change once we get rid of TransportChannelImpl, and the DTLS
- // channel interface no longer includes ICE-specific methods.
- const TransportChannelImpl* dtls() const { return dtls_.get(); }
- TransportChannelImpl* dtls() { return dtls_.get(); }
- const TransportChannelImpl* ice() const { return ice_.get(); }
- TransportChannelImpl* ice() { return ice_.get(); }
+ TransportChannelImpl* get() const { return impl_; }
+ TransportChannelImpl* operator->() const { return impl_; }
private:
- std::unique_ptr<TransportChannelImpl> ice_;
- std::unique_ptr<TransportChannelImpl> dtls_;
- int ref_ = 0;
+ TransportChannelImpl* impl_;
+ int ref_;
};
- // Helper functions to get a channel or transport, or iterator to it (in case
- // it needs to be erased).
- std::vector<RefCountedChannel>::iterator GetChannelIterator_n(
+ std::vector<RefCountedChannel>::iterator FindChannel_n(
const std::string& transport_name,
int component);
- std::vector<RefCountedChannel>::const_iterator GetChannelIterator_n(
- const std::string& transport_name,
- int component) const;
- const JsepTransport* GetJsepTransport_n(
- const std::string& transport_name) const;
- JsepTransport* GetJsepTransport_n(const std::string& transport_name);
- const RefCountedChannel* GetChannel_n(const std::string& transport_name,
- int component) const;
- RefCountedChannel* GetChannel_n(const std::string& transport_name,
- int component);
-
- JsepTransport* GetOrCreateJsepTransport_n(const std::string& transport_name);
- void DestroyAllChannels_n();
+
+ Transport* GetOrCreateTransport_n(const std::string& transport_name);
+ void DestroyTransport_n(const std::string& transport_name);
+ void DestroyAllTransports_n();
bool SetSslMaxProtocolVersion_n(rtc::SSLProtocolVersion version);
void SetIceConfig_n(const IceConfig& config);
void SetIceRole_n(IceRole ice_role);
- bool GetSslRole_n(const std::string& transport_name,
- rtc::SSLRole* role) const;
+ bool GetSslRole_n(const std::string& transport_name, rtc::SSLRole* role);
bool SetLocalCertificate_n(
const rtc::scoped_refptr<rtc::RTCCertificate>& certificate);
bool GetLocalCertificate_n(
const std::string& transport_name,
- rtc::scoped_refptr<rtc::RTCCertificate>* certificate) const;
+ rtc::scoped_refptr<rtc::RTCCertificate>* certificate);
std::unique_ptr<rtc::SSLCertificate> GetRemoteSSLCertificate_n(
- const std::string& transport_name) const;
+ const std::string& transport_name);
bool SetLocalTransportDescription_n(const std::string& transport_name,
const TransportDescription& tdesc,
ContentAction action,
@@ -239,9 +201,8 @@
const Candidates& candidates,
std::string* err);
bool RemoveRemoteCandidates_n(const Candidates& candidates, std::string* err);
- bool ReadyForRemoteCandidates_n(const std::string& transport_name) const;
+ bool ReadyForRemoteCandidates_n(const std::string& transport_name);
bool GetStats_n(const std::string& transport_name, TransportStats* stats);
- void SetMetricsObserver_n(webrtc::MetricsObserverInterface* metrics_observer);
// Handlers for signals from Transport.
void OnChannelWritableState_n(rtc::PacketTransportInterface* transport);
@@ -261,21 +222,24 @@
rtc::Thread* const signaling_thread_ = nullptr;
rtc::Thread* const network_thread_ = nullptr;
+ typedef std::map<std::string, Transport*> TransportMap;
+ TransportMap transports_;
+
+ std::vector<RefCountedChannel> channels_;
+
PortAllocator* const port_allocator_ = nullptr;
-
- std::map<std::string, std::unique_ptr<JsepTransport>> transports_;
- std::vector<RefCountedChannel> channels_;
+ rtc::SSLProtocolVersion ssl_max_version_ = rtc::SSL_PROTOCOL_DTLS_12;
// Aggregate state for TransportChannelImpls.
IceConnectionState connection_state_ = kIceConnectionConnecting;
bool receiving_ = false;
IceGatheringState gathering_state_ = kIceGatheringNew;
+ // TODO(deadbeef): Move the fields below down to the transports themselves
IceConfig ice_config_;
IceRole ice_role_ = ICEROLE_CONTROLLING;
bool redetermine_role_on_ice_restart_;
uint64_t ice_tiebreaker_ = rtc::CreateRandomId64();
- rtc::SSLProtocolVersion ssl_max_version_ = rtc::SSL_PROTOCOL_DTLS_12;
rtc::scoped_refptr<rtc::RTCCertificate> certificate_;
rtc::AsyncInvoker invoker_;
// True if QUIC is used instead of DTLS.
« no previous file with comments | « webrtc/p2p/base/transportchannel.h ('k') | webrtc/p2p/base/transportcontroller.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698