Index: mojo/services/network/tcp_bound_socket_impl.cc |
diff --git a/mojo/services/network/tcp_bound_socket_impl.cc b/mojo/services/network/tcp_bound_socket_impl.cc |
deleted file mode 100644 |
index 1d8669fb86c9a08521b4a6e3ad7247810c8c3f32..0000000000000000000000000000000000000000 |
--- a/mojo/services/network/tcp_bound_socket_impl.cc |
+++ /dev/null |
@@ -1,126 +0,0 @@ |
-// Copyright 2014 The Chromium Authors. All rights reserved. |
-// Use of this source code is governed by a BSD-style license that can be |
-// found in the LICENSE file. |
- |
-#include "mojo/services/network/tcp_bound_socket_impl.h" |
- |
-#include <utility> |
- |
-#include "mojo/services/network/net_adapters.h" |
-#include "mojo/services/network/net_address_type_converters.h" |
-#include "mojo/services/network/tcp_connected_socket_impl.h" |
-#include "mojo/services/network/tcp_server_socket_impl.h" |
-#include "net/base/net_errors.h" |
- |
-namespace mojo { |
- |
-TCPBoundSocketImpl::TCPBoundSocketImpl( |
- scoped_ptr<mojo::MessageLoopRef> app_refcount, |
- InterfaceRequest<TCPBoundSocket> request) |
- : app_refcount_(std::move(app_refcount)), |
- binding_(this, std::move(request)) {} |
- |
-TCPBoundSocketImpl::~TCPBoundSocketImpl() { |
-} |
- |
-int TCPBoundSocketImpl::Bind(NetAddressPtr local_address) { |
- net::IPEndPoint end_point = local_address.To<net::IPEndPoint>(); |
- |
- socket_.reset(new net::TCPSocket(NULL, net::NetLog::Source())); |
- int result = socket_->Open(end_point.GetFamily()); |
- if (result != net::OK) |
- return result; |
- |
- result = socket_->SetDefaultOptionsForServer(); |
- if (result != net::OK) |
- return result; |
- |
- result = socket_->Bind(end_point); |
- if (result != net::OK) |
- return result; |
- |
- return net::OK; |
-} |
- |
-NetAddressPtr TCPBoundSocketImpl::GetLocalAddress() const { |
- net::IPEndPoint resolved_local_address; |
- if (socket_->GetLocalAddress(&resolved_local_address) != net::OK) |
- return NetAddressPtr(); |
- return NetAddress::From(resolved_local_address); |
-} |
- |
-void TCPBoundSocketImpl::StartListening( |
- InterfaceRequest<TCPServerSocket> server, |
- const Callback<void(NetworkErrorPtr)>& callback) { |
- if (!socket_ || pending_connect_socket_.is_pending()) { |
- // A bound socket will only be returned to the caller after binding |
- // succeeds, so if the socket doesn't exist, that means ownership was |
- // already passed to a server socket or client socket. |
- callback.Run(MakeNetworkError(net::ERR_FAILED)); |
- return; |
- } |
- |
- // TODO(brettw) set the backlog properly. |
- int result = socket_->Listen(4); |
- if (result != net::OK) { |
- callback.Run(MakeNetworkError(result)); |
- return; |
- } |
- |
- // The server socket object takes ownership of the socket. |
- new TCPServerSocketImpl(std::move(socket_), app_refcount_->Clone(), |
- std::move(server)); |
- callback.Run(MakeNetworkError(net::OK)); |
-} |
- |
-void TCPBoundSocketImpl::Connect( |
- NetAddressPtr remote_address, |
- ScopedDataPipeConsumerHandle send_stream, |
- ScopedDataPipeProducerHandle receive_stream, |
- InterfaceRequest<TCPConnectedSocket> client_socket, |
- const Callback<void(NetworkErrorPtr)>& callback) { |
- if (!socket_ || pending_connect_socket_.is_pending()) { |
- // A bound socket will only be returned to the caller after binding |
- // succeeds, so if the socket doesn't exist, that means ownership was |
- // already passed to a server socket or client socket. |
- callback.Run(MakeNetworkError(net::ERR_FAILED)); |
- return; |
- } |
- |
- net::IPEndPoint end_point = remote_address.To<net::IPEndPoint>(); |
- |
- pending_connect_send_stream_ = std::move(send_stream); |
- pending_connect_receive_stream_ = std::move(receive_stream); |
- pending_connect_socket_ = std::move(client_socket); |
- pending_connect_callback_ = callback; |
- int result = socket_->Connect( |
- end_point, |
- base::Bind(&TCPBoundSocketImpl::OnConnected, base::Unretained(this))); |
- if (result == net::OK) { |
- OnConnected(result); |
- } else if (result != net::ERR_IO_PENDING) { |
- // Error occurred. |
- pending_connect_send_stream_.reset(); |
- pending_connect_receive_stream_.reset(); |
- pending_connect_socket_ = InterfaceRequest<TCPConnectedSocket>(); |
- pending_connect_callback_ = Callback<void(NetworkErrorPtr)>(); |
- callback.Run(MakeNetworkError(result)); |
- } |
-} |
- |
-void TCPBoundSocketImpl::OnConnected(int result) { |
- if (result == net::OK) { |
- new TCPConnectedSocketImpl( |
- std::move(socket_), std::move(pending_connect_send_stream_), |
- std::move(pending_connect_receive_stream_), |
- std::move(pending_connect_socket_), app_refcount_->Clone()); |
- } else { |
- pending_connect_send_stream_.reset(); |
- pending_connect_receive_stream_.reset(); |
- pending_connect_socket_ = InterfaceRequest<TCPConnectedSocket>(); |
- } |
- pending_connect_callback_.Run(MakeNetworkError(result)); |
- pending_connect_callback_ = Callback<void(NetworkErrorPtr)>(); |
-} |
- |
-} // namespace mojo |