| 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 "mojo/services/network/network_service_impl.h" | 5 #include "mojo/services/network/network_service_impl.h" |
| 6 | 6 |
| 7 #include <utility> |
| 8 |
| 7 #include "mojo/services/network/http_server_impl.h" | 9 #include "mojo/services/network/http_server_impl.h" |
| 8 #include "mojo/services/network/net_adapters.h" | 10 #include "mojo/services/network/net_adapters.h" |
| 9 #include "mojo/services/network/tcp_bound_socket_impl.h" | 11 #include "mojo/services/network/tcp_bound_socket_impl.h" |
| 10 #include "mojo/services/network/udp_socket_impl.h" | 12 #include "mojo/services/network/udp_socket_impl.h" |
| 11 #include "mojo/services/network/url_loader_impl.h" | 13 #include "mojo/services/network/url_loader_impl.h" |
| 12 #include "net/base/mime_util.h" | 14 #include "net/base/mime_util.h" |
| 13 | 15 |
| 14 namespace mojo { | 16 namespace mojo { |
| 15 | 17 |
| 16 NetworkServiceImpl::NetworkServiceImpl( | 18 NetworkServiceImpl::NetworkServiceImpl( |
| 17 scoped_ptr<mojo::AppRefCount> app_refcount, | 19 scoped_ptr<mojo::AppRefCount> app_refcount, |
| 18 InterfaceRequest<NetworkService> request) | 20 InterfaceRequest<NetworkService> request) |
| 19 : app_refcount_(app_refcount.Pass()), | 21 : app_refcount_(std::move(app_refcount)), |
| 20 binding_(this, request.Pass()) { | 22 binding_(this, std::move(request)) {} |
| 21 } | |
| 22 | 23 |
| 23 NetworkServiceImpl::~NetworkServiceImpl() { | 24 NetworkServiceImpl::~NetworkServiceImpl() { |
| 24 } | 25 } |
| 25 | 26 |
| 26 void NetworkServiceImpl::CreateTCPBoundSocket( | 27 void NetworkServiceImpl::CreateTCPBoundSocket( |
| 27 NetAddressPtr local_address, | 28 NetAddressPtr local_address, |
| 28 InterfaceRequest<TCPBoundSocket> bound_socket, | 29 InterfaceRequest<TCPBoundSocket> bound_socket, |
| 29 const CreateTCPBoundSocketCallback& callback) { | 30 const CreateTCPBoundSocketCallback& callback) { |
| 30 scoped_ptr<TCPBoundSocketImpl> bound(new TCPBoundSocketImpl( | 31 scoped_ptr<TCPBoundSocketImpl> bound( |
| 31 app_refcount_->Clone(), bound_socket.Pass())); | 32 new TCPBoundSocketImpl(app_refcount_->Clone(), std::move(bound_socket))); |
| 32 int net_error = bound->Bind(local_address.Pass()); | 33 int net_error = bound->Bind(std::move(local_address)); |
| 33 if (net_error != net::OK) { | 34 if (net_error != net::OK) { |
| 34 callback.Run(MakeNetworkError(net_error), NetAddressPtr()); | 35 callback.Run(MakeNetworkError(net_error), NetAddressPtr()); |
| 35 return; | 36 return; |
| 36 } | 37 } |
| 37 ignore_result(bound.release()); // Strongly owned by the message pipe. | 38 ignore_result(bound.release()); // Strongly owned by the message pipe. |
| 38 NetAddressPtr resulting_local_address(bound->GetLocalAddress()); | 39 NetAddressPtr resulting_local_address(bound->GetLocalAddress()); |
| 39 callback.Run(MakeNetworkError(net::OK), resulting_local_address.Pass()); | 40 callback.Run(MakeNetworkError(net::OK), std::move(resulting_local_address)); |
| 40 } | 41 } |
| 41 | 42 |
| 42 void NetworkServiceImpl::CreateTCPConnectedSocket( | 43 void NetworkServiceImpl::CreateTCPConnectedSocket( |
| 43 NetAddressPtr remote_address, | 44 NetAddressPtr remote_address, |
| 44 ScopedDataPipeConsumerHandle send_stream, | 45 ScopedDataPipeConsumerHandle send_stream, |
| 45 ScopedDataPipeProducerHandle receive_stream, | 46 ScopedDataPipeProducerHandle receive_stream, |
| 46 InterfaceRequest<TCPConnectedSocket> client_socket, | 47 InterfaceRequest<TCPConnectedSocket> client_socket, |
| 47 const CreateTCPConnectedSocketCallback& callback) { | 48 const CreateTCPConnectedSocketCallback& callback) { |
| 48 // TODO(brettw) implement this. We need to know what type of socket to use | 49 // TODO(brettw) implement this. We need to know what type of socket to use |
| 49 // so we can create the right one (i.e. to pass to TCPSocket::Open) before | 50 // so we can create the right one (i.e. to pass to TCPSocket::Open) before |
| 50 // doing the connect. | 51 // doing the connect. |
| 51 callback.Run(MakeNetworkError(net::ERR_NOT_IMPLEMENTED), NetAddressPtr()); | 52 callback.Run(MakeNetworkError(net::ERR_NOT_IMPLEMENTED), NetAddressPtr()); |
| 52 } | 53 } |
| 53 | 54 |
| 54 void NetworkServiceImpl::CreateUDPSocket(InterfaceRequest<UDPSocket> request) { | 55 void NetworkServiceImpl::CreateUDPSocket(InterfaceRequest<UDPSocket> request) { |
| 55 // The lifetime of this UDPSocketImpl is bound to that of the underlying pipe. | 56 // The lifetime of this UDPSocketImpl is bound to that of the underlying pipe. |
| 56 new UDPSocketImpl(request.Pass(), app_refcount_->Clone()); | 57 new UDPSocketImpl(std::move(request), app_refcount_->Clone()); |
| 57 } | 58 } |
| 58 | 59 |
| 59 void NetworkServiceImpl::CreateHttpServer( | 60 void NetworkServiceImpl::CreateHttpServer( |
| 60 NetAddressPtr local_address, | 61 NetAddressPtr local_address, |
| 61 HttpServerDelegatePtr delegate, | 62 HttpServerDelegatePtr delegate, |
| 62 const CreateHttpServerCallback& callback) { | 63 const CreateHttpServerCallback& callback) { |
| 63 HttpServerImpl::Create(local_address.Pass(), delegate.Pass(), | 64 HttpServerImpl::Create(std::move(local_address), std::move(delegate), |
| 64 app_refcount_->Clone(), callback); | 65 app_refcount_->Clone(), callback); |
| 65 } | 66 } |
| 66 | 67 |
| 67 void NetworkServiceImpl::GetMimeTypeFromFile( | 68 void NetworkServiceImpl::GetMimeTypeFromFile( |
| 68 const mojo::String& file_path, | 69 const mojo::String& file_path, |
| 69 const GetMimeTypeFromFileCallback& callback) { | 70 const GetMimeTypeFromFileCallback& callback) { |
| 70 std::string mime; | 71 std::string mime; |
| 71 net::GetMimeTypeFromFile( | 72 net::GetMimeTypeFromFile( |
| 72 base::FilePath::FromUTF8Unsafe(file_path.To<std::string>()), &mime); | 73 base::FilePath::FromUTF8Unsafe(file_path.To<std::string>()), &mime); |
| 73 callback.Run(mime); | 74 callback.Run(mime); |
| 74 } | 75 } |
| 75 | 76 |
| 76 } // namespace mojo | 77 } // namespace mojo |
| OLD | NEW |