| OLD | NEW |
| 1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 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 "chrome/browser/devtools/device/port_forwarding_controller.h" | 5 #include "chrome/browser/devtools/device/port_forwarding_controller.h" |
| 6 | 6 |
| 7 #include <algorithm> | 7 #include <algorithm> |
| 8 #include <map> | 8 #include <map> |
| 9 | 9 |
| 10 #include "base/bind.h" | 10 #include "base/bind.h" |
| (...skipping 102 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 113 remote_socket_->Disconnect(); | 113 remote_socket_->Disconnect(); |
| 114 callback_.Run(-1); | 114 callback_.Run(-1); |
| 115 } | 115 } |
| 116 | 116 |
| 117 void OnConnected(int result) { | 117 void OnConnected(int result) { |
| 118 if (result < 0) { | 118 if (result < 0) { |
| 119 SelfDestruct(); | 119 SelfDestruct(); |
| 120 return; | 120 return; |
| 121 } | 121 } |
| 122 | 122 |
| 123 ++pending_writes_; // avoid SelfDestruct in first Pump |
| 123 Pump(host_socket_.get(), remote_socket_.get()); | 124 Pump(host_socket_.get(), remote_socket_.get()); |
| 124 Pump(remote_socket_.get(), host_socket_.get()); | 125 --pending_writes_; |
| 126 if (pending_destruction_) { |
| 127 SelfDestruct(); |
| 128 } else { |
| 129 Pump(remote_socket_.get(), host_socket_.get()); |
| 130 } |
| 125 } | 131 } |
| 126 | 132 |
| 127 void Pump(net::StreamSocket* from, net::StreamSocket* to) { | 133 void Pump(net::StreamSocket* from, net::StreamSocket* to) { |
| 128 scoped_refptr<net::IOBuffer> buffer = new net::IOBuffer(kBufferSize); | 134 scoped_refptr<net::IOBuffer> buffer = new net::IOBuffer(kBufferSize); |
| 129 int result = from->Read( | 135 int result = from->Read( |
| 130 buffer.get(), | 136 buffer.get(), |
| 131 kBufferSize, | 137 kBufferSize, |
| 132 base::Bind( | 138 base::Bind( |
| 133 &SocketTunnel::OnRead, base::Unretained(this), from, to, buffer)); | 139 &SocketTunnel::OnRead, base::Unretained(this), from, to, buffer)); |
| 134 if (result != net::ERR_IO_PENDING) | 140 if (result != net::ERR_IO_PENDING) |
| (...skipping 528 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 663 "PortForwardingController", | 669 "PortForwardingController", |
| 664 BrowserContextDependencyManager::GetInstance()) {} | 670 BrowserContextDependencyManager::GetInstance()) {} |
| 665 | 671 |
| 666 PortForwardingController::Factory::~Factory() {} | 672 PortForwardingController::Factory::~Factory() {} |
| 667 | 673 |
| 668 KeyedService* PortForwardingController::Factory::BuildServiceInstanceFor( | 674 KeyedService* PortForwardingController::Factory::BuildServiceInstanceFor( |
| 669 content::BrowserContext* context) const { | 675 content::BrowserContext* context) const { |
| 670 Profile* profile = Profile::FromBrowserContext(context); | 676 Profile* profile = Profile::FromBrowserContext(context); |
| 671 return new PortForwardingController(profile); | 677 return new PortForwardingController(profile); |
| 672 } | 678 } |
| OLD | NEW |