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

Unified Diff: blimp/net/tcp_client_transport.cc

Issue 1696563002: Blimp: add support for SSL connections. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Reland (safe_json issue fixed). Created 4 years, 10 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « blimp/net/tcp_client_transport.h ('k') | blimp/net/tcp_engine_transport.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: blimp/net/tcp_client_transport.cc
diff --git a/blimp/net/tcp_client_transport.cc b/blimp/net/tcp_client_transport.cc
index 9dbb880341cf72767cb525f4ea6b08e0650f2f8f..6a6cc5066d7966f5fde1f2a64d4e0e25a7147a1d 100644
--- a/blimp/net/tcp_client_transport.cc
+++ b/blimp/net/tcp_client_transport.cc
@@ -9,38 +9,42 @@
#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::AddressList& addresses,
+TCPClientTransport::TCPClientTransport(const net::IPEndPoint& ip_endpoint,
net::NetLog* net_log)
- : addresses_(addresses), net_log_(net_log) {}
+ : ip_endpoint_(ip_endpoint),
+ net_log_(net_log),
+ socket_factory_(net::ClientSocketFactory::GetDefaultFactory()) {}
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());
- socket_.reset(
- new net::TCPClientSocket(addresses_, net_log_, net::NetLog::Source()));
+ connect_callback_ = callback;
+ socket_ = socket_factory_->CreateTransportClientSocket(
+ net::AddressList(ip_endpoint_), 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;
}
- if (result != net::OK) {
- socket_ = nullptr;
- }
-
- base::MessageLoop::current()->PostTask(FROM_HERE,
- base::Bind(callback, result));
+ OnTCPConnectComplete(result);
}
scoped_ptr<BlimpConnection> TCPClientTransport::TakeConnection() {
@@ -49,17 +53,33 @@ scoped_ptr<BlimpConnection> TCPClientTransport::TakeConnection() {
return make_scoped_ptr(new StreamSocketConnection(std::move(socket_)));
}
-const std::string TCPClientTransport::GetName() const {
+const char* TCPClientTransport::GetName() const {
return "TCP";
}
void TCPClientTransport::OnTCPConnectComplete(int result) {
DCHECK_NE(net::ERR_IO_PENDING, result);
- DCHECK(socket_);
+ OnConnectComplete(result);
+}
+
+void TCPClientTransport::OnConnectComplete(int result) {
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
« no previous file with comments | « blimp/net/tcp_client_transport.h ('k') | blimp/net/tcp_engine_transport.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698