Index: blimp/net/tcp_client_transport.cc |
diff --git a/blimp/net/tcp_client_transport.cc b/blimp/net/tcp_client_transport.cc |
index 6a6cc5066d7966f5fde1f2a64d4e0e25a7147a1d..9dbb880341cf72767cb525f4ea6b08e0650f2f8f 100644 |
--- a/blimp/net/tcp_client_transport.cc |
+++ b/blimp/net/tcp_client_transport.cc |
@@ -9,42 +9,38 @@ |
#include "base/memory/scoped_ptr.h" |
#include "base/message_loop/message_loop.h" |
#include "blimp/net/stream_socket_connection.h" |
-#include "net/socket/client_socket_factory.h" |
#include "net/socket/stream_socket.h" |
#include "net/socket/tcp_client_socket.h" |
namespace blimp { |
-TCPClientTransport::TCPClientTransport(const net::IPEndPoint& ip_endpoint, |
+TCPClientTransport::TCPClientTransport(const net::AddressList& addresses, |
net::NetLog* net_log) |
- : ip_endpoint_(ip_endpoint), |
- net_log_(net_log), |
- socket_factory_(net::ClientSocketFactory::GetDefaultFactory()) {} |
+ : addresses_(addresses), net_log_(net_log) {} |
TCPClientTransport::~TCPClientTransport() {} |
- |
-void TCPClientTransport::SetClientSocketFactoryForTest( |
- net::ClientSocketFactory* factory) { |
- DCHECK(factory); |
- socket_factory_ = factory; |
-} |
void TCPClientTransport::Connect(const net::CompletionCallback& callback) { |
DCHECK(!socket_); |
DCHECK(!callback.is_null()); |
- connect_callback_ = callback; |
- socket_ = socket_factory_->CreateTransportClientSocket( |
- net::AddressList(ip_endpoint_), net_log_, net::NetLog::Source()); |
+ socket_.reset( |
+ new net::TCPClientSocket(addresses_, net_log_, net::NetLog::Source())); |
net::CompletionCallback completion_callback = base::Bind( |
&TCPClientTransport::OnTCPConnectComplete, base::Unretained(this)); |
int result = socket_->Connect(completion_callback); |
if (result == net::ERR_IO_PENDING) { |
+ connect_callback_ = callback; |
return; |
} |
- OnTCPConnectComplete(result); |
+ if (result != net::OK) { |
+ socket_ = nullptr; |
+ } |
+ |
+ base::MessageLoop::current()->PostTask(FROM_HERE, |
+ base::Bind(callback, result)); |
} |
scoped_ptr<BlimpConnection> TCPClientTransport::TakeConnection() { |
@@ -53,33 +49,17 @@ |
return make_scoped_ptr(new StreamSocketConnection(std::move(socket_))); |
} |
-const char* TCPClientTransport::GetName() const { |
+const std::string TCPClientTransport::GetName() const { |
return "TCP"; |
} |
void TCPClientTransport::OnTCPConnectComplete(int result) { |
DCHECK_NE(net::ERR_IO_PENDING, result); |
- OnConnectComplete(result); |
-} |
- |
-void TCPClientTransport::OnConnectComplete(int result) { |
+ DCHECK(socket_); |
if (result != net::OK) { |
socket_ = nullptr; |
} |
base::ResetAndReturn(&connect_callback_).Run(result); |
} |
-scoped_ptr<net::StreamSocket> TCPClientTransport::TakeSocket() { |
- return std::move(socket_); |
-} |
- |
-void TCPClientTransport::SetSocket(scoped_ptr<net::StreamSocket> socket) { |
- DCHECK(socket); |
- socket_ = std::move(socket); |
-} |
- |
-net::ClientSocketFactory* TCPClientTransport::socket_factory() const { |
- return socket_factory_; |
-} |
- |
} // namespace blimp |