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

Side by Side Diff: remoting/protocol/pepper_transport_factory.cc

Issue 10160012: Pass TransportConfig to TransportFactory instead of Transport. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 8 years, 7 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 | Annotate | Revision Log
« no previous file with comments | « remoting/protocol/pepper_transport_factory.h ('k') | remoting/protocol/transport.h » ('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 (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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 #include "remoting/protocol/pepper_transport_factory.h" 5 #include "remoting/protocol/pepper_transport_factory.h"
6 6
7 #include "base/bind.h" 7 #include "base/bind.h"
8 #include "crypto/hmac.h" 8 #include "crypto/hmac.h"
9 #include "jingle/glue/utils.h" 9 #include "jingle/glue/utils.h"
10 #include "net/base/cert_status_flags.h" 10 #include "net/base/cert_status_flags.h"
(...skipping 20 matching lines...) Expand all
31 const int kTcpAckDelayMilliseconds = 10; 31 const int kTcpAckDelayMilliseconds = 10;
32 32
33 // Values for the TCP send and receive buffer size. This should be tuned to 33 // Values for the TCP send and receive buffer size. This should be tuned to
34 // accomodate high latency network but not backlog the decoding pipeline. 34 // accomodate high latency network but not backlog the decoding pipeline.
35 const int kTcpReceiveBufferSize = 256 * 1024; 35 const int kTcpReceiveBufferSize = 256 * 1024;
36 const int kTcpSendBufferSize = kTcpReceiveBufferSize + 30 * 1024; 36 const int kTcpSendBufferSize = kTcpReceiveBufferSize + 30 * 1024;
37 37
38 class PepperStreamTransport : public StreamTransport, 38 class PepperStreamTransport : public StreamTransport,
39 public PepperTransportSocketAdapter::Observer { 39 public PepperTransportSocketAdapter::Observer {
40 public: 40 public:
41 PepperStreamTransport(pp::Instance* pp_instance); 41 PepperStreamTransport(pp::Instance* pp_instance,
42 const TransportConfig& config);
42 virtual ~PepperStreamTransport(); 43 virtual ~PepperStreamTransport();
43 44
44 // StreamTransport interface. 45 // StreamTransport interface.
45 virtual void Initialize( 46 virtual void Initialize(
46 const std::string& name, 47 const std::string& name,
47 const TransportConfig& config,
48 Transport::EventHandler* event_handler, 48 Transport::EventHandler* event_handler,
49 scoped_ptr<ChannelAuthenticator> authenticator) OVERRIDE; 49 scoped_ptr<ChannelAuthenticator> authenticator) OVERRIDE;
50 virtual void Connect( 50 virtual void Connect(
51 const StreamTransport::ConnectedCallback& callback) OVERRIDE; 51 const StreamTransport::ConnectedCallback& callback) OVERRIDE;
52 virtual void AddRemoteCandidate(const cricket::Candidate& candidate) OVERRIDE; 52 virtual void AddRemoteCandidate(const cricket::Candidate& candidate) OVERRIDE;
53 virtual const std::string& name() const OVERRIDE; 53 virtual const std::string& name() const OVERRIDE;
54 virtual bool is_connected() const OVERRIDE; 54 virtual bool is_connected() const OVERRIDE;
55 55
56 // PepperTransportSocketAdapter::Observer interface. 56 // PepperTransportSocketAdapter::Observer interface.
57 virtual void OnChannelDeleted() OVERRIDE; 57 virtual void OnChannelDeleted() OVERRIDE;
58 virtual void OnChannelNewLocalCandidate( 58 virtual void OnChannelNewLocalCandidate(
59 const std::string& candidate) OVERRIDE; 59 const std::string& candidate) OVERRIDE;
60 60
61 private: 61 private:
62 void OnP2PConnect(int result); 62 void OnP2PConnect(int result);
63 void OnAuthenticationDone(net::Error error, 63 void OnAuthenticationDone(net::Error error,
64 scoped_ptr<net::StreamSocket> socket); 64 scoped_ptr<net::StreamSocket> socket);
65 65
66 void NotifyConnected(scoped_ptr<net::StreamSocket> socket); 66 void NotifyConnected(scoped_ptr<net::StreamSocket> socket);
67 void NotifyConnectFailed(); 67 void NotifyConnectFailed();
68 68
69 pp::Instance* pp_instance_; 69 pp::Instance* pp_instance_;
70 TransportConfig config_;
70 std::string name_; 71 std::string name_;
71 TransportConfig config_;
72 EventHandler* event_handler_; 72 EventHandler* event_handler_;
73 StreamTransport::ConnectedCallback callback_; 73 StreamTransport::ConnectedCallback callback_;
74 scoped_ptr<ChannelAuthenticator> authenticator_; 74 scoped_ptr<ChannelAuthenticator> authenticator_;
75 75
76 // We own |channel_| until it is connected. After that 76 // We own |channel_| until it is connected. After that
77 // |authenticator_| owns it. 77 // |authenticator_| owns it.
78 scoped_ptr<PepperTransportSocketAdapter> owned_channel_; 78 scoped_ptr<PepperTransportSocketAdapter> owned_channel_;
79 PepperTransportSocketAdapter* channel_; 79 PepperTransportSocketAdapter* channel_;
80 80
81 // Indicates that we've finished connecting. 81 // Indicates that we've finished connecting.
82 bool connected_; 82 bool connected_;
83 83
84 DISALLOW_COPY_AND_ASSIGN(PepperStreamTransport); 84 DISALLOW_COPY_AND_ASSIGN(PepperStreamTransport);
85 }; 85 };
86 86
87 PepperStreamTransport::PepperStreamTransport(pp::Instance* pp_instance) 87 PepperStreamTransport::PepperStreamTransport(pp::Instance* pp_instance,
88 const TransportConfig& config)
88 : pp_instance_(pp_instance), 89 : pp_instance_(pp_instance),
90 config_(config),
89 event_handler_(NULL), 91 event_handler_(NULL),
90 channel_(NULL), 92 channel_(NULL),
91 connected_(false) { 93 connected_(false) {
92 } 94 }
93 95
94 PepperStreamTransport::~PepperStreamTransport() { 96 PepperStreamTransport::~PepperStreamTransport() {
95 DCHECK(event_handler_); 97 DCHECK(event_handler_);
96 event_handler_->OnTransportDeleted(this); 98 event_handler_->OnTransportDeleted(this);
97 // Channel should be already destroyed if we were connected. 99 // Channel should be already destroyed if we were connected.
98 DCHECK(!connected_ || channel_ == NULL); 100 DCHECK(!connected_ || channel_ == NULL);
99 } 101 }
100 102
101 void PepperStreamTransport::Initialize( 103 void PepperStreamTransport::Initialize(
102 const std::string& name, 104 const std::string& name,
103 const TransportConfig& config,
104 Transport::EventHandler* event_handler, 105 Transport::EventHandler* event_handler,
105 scoped_ptr<ChannelAuthenticator> authenticator) { 106 scoped_ptr<ChannelAuthenticator> authenticator) {
106 DCHECK(CalledOnValidThread()); 107 DCHECK(CalledOnValidThread());
107 108
108 DCHECK(!name.empty()); 109 DCHECK(!name.empty());
109 DCHECK(event_handler); 110 DCHECK(event_handler);
110 111
111 // Can be initialized only once. 112 // Can be initialized only once.
112 DCHECK(name_.empty()); 113 DCHECK(name_.empty());
113 114
114 name_ = name; 115 name_ = name;
115 config_ = config;
116 event_handler_ = event_handler; 116 event_handler_ = event_handler;
117 authenticator_ = authenticator.Pass(); 117 authenticator_ = authenticator.Pass();
118 } 118 }
119 119
120 void PepperStreamTransport::Connect( 120 void PepperStreamTransport::Connect(
121 const StreamTransport::ConnectedCallback& callback) { 121 const StreamTransport::ConnectedCallback& callback) {
122 DCHECK(CalledOnValidThread()); 122 DCHECK(CalledOnValidThread());
123 123
124 // Initialize() must be called first. 124 // Initialize() must be called first.
125 DCHECK(!name_.empty()); 125 DCHECK(!name_.empty());
(...skipping 147 matching lines...) Expand 10 before | Expand all | Expand 10 after
273 } // namespace 273 } // namespace
274 274
275 PepperTransportFactory::PepperTransportFactory( 275 PepperTransportFactory::PepperTransportFactory(
276 pp::Instance* pp_instance) 276 pp::Instance* pp_instance)
277 : pp_instance_(pp_instance) { 277 : pp_instance_(pp_instance) {
278 } 278 }
279 279
280 PepperTransportFactory::~PepperTransportFactory() { 280 PepperTransportFactory::~PepperTransportFactory() {
281 } 281 }
282 282
283 void PepperTransportFactory::SetTransportConfig(const TransportConfig& config) {
284 config_ = config;
285 }
286
283 scoped_ptr<StreamTransport> PepperTransportFactory::CreateStreamTransport() { 287 scoped_ptr<StreamTransport> PepperTransportFactory::CreateStreamTransport() {
284 return scoped_ptr<StreamTransport>(new PepperStreamTransport(pp_instance_)); 288 return scoped_ptr<StreamTransport>(
289 new PepperStreamTransport(pp_instance_, config_));
285 } 290 }
286 291
287 scoped_ptr<DatagramTransport> 292 scoped_ptr<DatagramTransport>
288 PepperTransportFactory::CreateDatagramTransport() { 293 PepperTransportFactory::CreateDatagramTransport() {
289 NOTIMPLEMENTED(); 294 NOTIMPLEMENTED();
290 return scoped_ptr<DatagramTransport>(NULL); 295 return scoped_ptr<DatagramTransport>(NULL);
291 } 296 }
292 297
293 } // namespace protocol 298 } // namespace protocol
294 } // namespace remoting 299 } // namespace remoting
OLDNEW
« no previous file with comments | « remoting/protocol/pepper_transport_factory.h ('k') | remoting/protocol/transport.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698