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

Side by Side Diff: remoting/protocol/webrtc_transport.h

Issue 1545743002: Move ownership of Transport out of Session. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@move_not_pass_client
Patch Set: Created 4 years, 12 months 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 unified diff | Download patch
« no previous file with comments | « remoting/protocol/webrtc_connection_to_host.cc ('k') | remoting/protocol/webrtc_transport.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2015 The Chromium Authors. All rights reserved. 1 // Copyright 2015 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #ifndef REMOTING_PROTOCOL_WEBRTC_TRANSPORT_H_ 5 #ifndef REMOTING_PROTOCOL_WEBRTC_TRANSPORT_H_
6 #define REMOTING_PROTOCOL_WEBRTC_TRANSPORT_H_ 6 #define REMOTING_PROTOCOL_WEBRTC_TRANSPORT_H_
7 7
8 #include "base/macros.h" 8 #include "base/macros.h"
9 #include "base/memory/ref_counted.h" 9 #include "base/memory/ref_counted.h"
10 #include "base/memory/scoped_ptr.h" 10 #include "base/memory/scoped_ptr.h"
(...skipping 12 matching lines...) Expand all
23 } // namespace webrtc 23 } // namespace webrtc
24 24
25 namespace remoting { 25 namespace remoting {
26 namespace protocol { 26 namespace protocol {
27 27
28 class TransportContext; 28 class TransportContext;
29 29
30 class WebrtcTransport : public Transport, 30 class WebrtcTransport : public Transport,
31 public webrtc::PeerConnectionObserver { 31 public webrtc::PeerConnectionObserver {
32 public: 32 public:
33 class EventHandler {
34 public:
35 // Called when the transport is connected.
36 virtual void OnWebrtcTransportConnected() = 0;
37
38 // Called when there is an error connecting the session.
39 virtual void OnWebrtcTransportError(ErrorCode error) = 0;
40 };
41
33 WebrtcTransport(rtc::Thread* worker_thread, 42 WebrtcTransport(rtc::Thread* worker_thread,
34 scoped_refptr<TransportContext> transport_context); 43 scoped_refptr<TransportContext> transport_context,
44 EventHandler* event_handler);
35 ~WebrtcTransport() override; 45 ~WebrtcTransport() override;
36 46
37 webrtc::PeerConnectionInterface* peer_connection() { 47 webrtc::PeerConnectionInterface* peer_connection() {
38 return peer_connection_; 48 return peer_connection_;
39 } 49 }
40 webrtc::PeerConnectionFactoryInterface* peer_connection_factory() { 50 webrtc::PeerConnectionFactoryInterface* peer_connection_factory() {
41 return peer_connection_factory_; 51 return peer_connection_factory_;
42 } 52 }
43 53
54 StreamChannelFactory* GetStreamChannelFactory();
55
44 // Transport interface. 56 // Transport interface.
45 void Start(EventHandler* event_handler, 57 void Start(Authenticator* authenticator,
46 Authenticator* authenticator) override; 58 SendTransportInfoCallback send_transport_info_callback) override;
47 bool ProcessTransportInfo(buzz::XmlElement* transport_info) override; 59 bool ProcessTransportInfo(buzz::XmlElement* transport_info) override;
48 StreamChannelFactory* GetStreamChannelFactory() override;
49 StreamChannelFactory* GetMultiplexedChannelFactory() override;
50 WebrtcTransport* AsWebrtcTransport() override;
51 60
52 private: 61 private:
53 void OnPortAllocatorCreated( 62 void OnPortAllocatorCreated(
54 scoped_ptr<cricket::PortAllocator> port_allocator); 63 scoped_ptr<cricket::PortAllocator> port_allocator);
55 64
56 void OnLocalSessionDescriptionCreated( 65 void OnLocalSessionDescriptionCreated(
57 scoped_ptr<webrtc::SessionDescriptionInterface> description, 66 scoped_ptr<webrtc::SessionDescriptionInterface> description,
58 const std::string& error); 67 const std::string& error);
59 void OnLocalDescriptionSet(bool success, const std::string& error); 68 void OnLocalDescriptionSet(bool success, const std::string& error);
60 void OnRemoteDescriptionSet(bool send_answer, 69 void OnRemoteDescriptionSet(bool send_answer,
(...skipping 16 matching lines...) Expand all
77 void RequestNegotiation(); 86 void RequestNegotiation();
78 void SendOffer(); 87 void SendOffer();
79 void EnsurePendingTransportInfoMessage(); 88 void EnsurePendingTransportInfoMessage();
80 void SendTransportInfo(); 89 void SendTransportInfo();
81 void AddPendingCandidatesIfPossible(); 90 void AddPendingCandidatesIfPossible();
82 91
83 void Close(ErrorCode error); 92 void Close(ErrorCode error);
84 93
85 base::ThreadChecker thread_checker_; 94 base::ThreadChecker thread_checker_;
86 95
96 rtc::Thread* worker_thread_;
87 scoped_refptr<TransportContext> transport_context_; 97 scoped_refptr<TransportContext> transport_context_;
88 EventHandler* event_handler_ = nullptr; 98 EventHandler* event_handler_ = nullptr;
89 rtc::Thread* worker_thread_; 99 SendTransportInfoCallback send_transport_info_callback_;
90 100
91 scoped_ptr<webrtc::FakeAudioDeviceModule> fake_audio_device_module_; 101 scoped_ptr<webrtc::FakeAudioDeviceModule> fake_audio_device_module_;
92 102
93 rtc::scoped_refptr<webrtc::PeerConnectionFactoryInterface> 103 rtc::scoped_refptr<webrtc::PeerConnectionFactoryInterface>
94 peer_connection_factory_; 104 peer_connection_factory_;
95 rtc::scoped_refptr<webrtc::PeerConnectionInterface> peer_connection_; 105 rtc::scoped_refptr<webrtc::PeerConnectionInterface> peer_connection_;
96 106
97 bool negotiation_pending_ = false; 107 bool negotiation_pending_ = false;
98 108
99 scoped_ptr<buzz::XmlElement> pending_transport_info_message_; 109 scoped_ptr<buzz::XmlElement> pending_transport_info_message_;
100 base::OneShotTimer transport_info_timer_; 110 base::OneShotTimer transport_info_timer_;
101 111
102 ScopedVector<webrtc::IceCandidateInterface> pending_incoming_candidates_; 112 ScopedVector<webrtc::IceCandidateInterface> pending_incoming_candidates_;
103 113
104 std::list<rtc::scoped_refptr<webrtc::MediaStreamInterface>> 114 std::list<rtc::scoped_refptr<webrtc::MediaStreamInterface>>
105 unclaimed_streams_; 115 unclaimed_streams_;
106 116
107 WebrtcDataStreamAdapter data_stream_adapter_; 117 WebrtcDataStreamAdapter data_stream_adapter_;
108 118
109 base::WeakPtrFactory<WebrtcTransport> weak_factory_; 119 base::WeakPtrFactory<WebrtcTransport> weak_factory_;
110 120
111 DISALLOW_COPY_AND_ASSIGN(WebrtcTransport); 121 DISALLOW_COPY_AND_ASSIGN(WebrtcTransport);
112 }; 122 };
113 123
114 class WebrtcTransportFactory : public TransportFactory {
115 public:
116 WebrtcTransportFactory(rtc::Thread* worker_thread,
117 scoped_refptr<TransportContext> transport_context);
118 ~WebrtcTransportFactory() override;
119
120 // TransportFactory interface.
121 scoped_ptr<Transport> CreateTransport() override;
122
123 private:
124 rtc::Thread* worker_thread_;
125 scoped_refptr<TransportContext> transport_context_;
126
127 DISALLOW_COPY_AND_ASSIGN(WebrtcTransportFactory);
128 };
129
130 } // namespace protocol 124 } // namespace protocol
131 } // namespace remoting 125 } // namespace remoting
132 126
133 #endif // REMOTING_PROTOCOL_WEBRTC_TRANSPORT_H_ 127 #endif // REMOTING_PROTOCOL_WEBRTC_TRANSPORT_H_
OLDNEW
« no previous file with comments | « remoting/protocol/webrtc_connection_to_host.cc ('k') | remoting/protocol/webrtc_transport.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698