| 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 "device/serial/serial_service_impl.h" | 5 #include "device/serial/serial_service_impl.h" |
| 6 | 6 |
| 7 #include <stddef.h> | 7 #include <stddef.h> |
| 8 #include <utility> |
| 8 | 9 |
| 9 #include "base/bind.h" | 10 #include "base/bind.h" |
| 10 #include "base/location.h" | 11 #include "base/location.h" |
| 11 #include "device/serial/serial_io_handler.h" | 12 #include "device/serial/serial_io_handler.h" |
| 12 | 13 |
| 13 namespace device { | 14 namespace device { |
| 14 | 15 |
| 15 SerialServiceImpl::SerialServiceImpl( | 16 SerialServiceImpl::SerialServiceImpl( |
| 16 scoped_refptr<SerialConnectionFactory> connection_factory, | 17 scoped_refptr<SerialConnectionFactory> connection_factory, |
| 17 mojo::InterfaceRequest<serial::SerialService> request) | 18 mojo::InterfaceRequest<serial::SerialService> request) |
| 18 : connection_factory_(connection_factory), binding_(this, request.Pass()) { | 19 : connection_factory_(connection_factory), |
| 19 } | 20 binding_(this, std::move(request)) {} |
| 20 | 21 |
| 21 SerialServiceImpl::SerialServiceImpl( | 22 SerialServiceImpl::SerialServiceImpl( |
| 22 scoped_refptr<SerialConnectionFactory> connection_factory, | 23 scoped_refptr<SerialConnectionFactory> connection_factory, |
| 23 scoped_ptr<SerialDeviceEnumerator> device_enumerator, | 24 scoped_ptr<SerialDeviceEnumerator> device_enumerator, |
| 24 mojo::InterfaceRequest<serial::SerialService> request) | 25 mojo::InterfaceRequest<serial::SerialService> request) |
| 25 : device_enumerator_(device_enumerator.Pass()), | 26 : device_enumerator_(std::move(device_enumerator)), |
| 26 connection_factory_(connection_factory), | 27 connection_factory_(connection_factory), |
| 27 binding_(this, request.Pass()) { | 28 binding_(this, std::move(request)) {} |
| 28 } | |
| 29 | 29 |
| 30 SerialServiceImpl::~SerialServiceImpl() { | 30 SerialServiceImpl::~SerialServiceImpl() { |
| 31 } | 31 } |
| 32 | 32 |
| 33 // static | 33 // static |
| 34 void SerialServiceImpl::Create( | 34 void SerialServiceImpl::Create( |
| 35 scoped_refptr<base::SingleThreadTaskRunner> io_task_runner, | 35 scoped_refptr<base::SingleThreadTaskRunner> io_task_runner, |
| 36 scoped_refptr<base::SingleThreadTaskRunner> ui_task_runner, | 36 scoped_refptr<base::SingleThreadTaskRunner> ui_task_runner, |
| 37 mojo::InterfaceRequest<serial::SerialService> request) { | 37 mojo::InterfaceRequest<serial::SerialService> request) { |
| 38 new SerialServiceImpl( | 38 new SerialServiceImpl( |
| 39 new SerialConnectionFactory( | 39 new SerialConnectionFactory( |
| 40 base::Bind(SerialIoHandler::Create, | 40 base::Bind(SerialIoHandler::Create, |
| 41 base::ThreadTaskRunnerHandle::Get(), ui_task_runner), | 41 base::ThreadTaskRunnerHandle::Get(), ui_task_runner), |
| 42 io_task_runner), | 42 io_task_runner), |
| 43 request.Pass()); | 43 std::move(request)); |
| 44 } | 44 } |
| 45 | 45 |
| 46 // static | 46 // static |
| 47 void SerialServiceImpl::CreateOnMessageLoop( | 47 void SerialServiceImpl::CreateOnMessageLoop( |
| 48 scoped_refptr<base::SingleThreadTaskRunner> task_runner, | 48 scoped_refptr<base::SingleThreadTaskRunner> task_runner, |
| 49 scoped_refptr<base::SingleThreadTaskRunner> io_task_runner, | 49 scoped_refptr<base::SingleThreadTaskRunner> io_task_runner, |
| 50 scoped_refptr<base::SingleThreadTaskRunner> ui_task_runner, | 50 scoped_refptr<base::SingleThreadTaskRunner> ui_task_runner, |
| 51 mojo::InterfaceRequest<serial::SerialService> request) { | 51 mojo::InterfaceRequest<serial::SerialService> request) { |
| 52 task_runner->PostTask(FROM_HERE, | 52 task_runner->PostTask(FROM_HERE, |
| 53 base::Bind(&SerialServiceImpl::Create, io_task_runner, | 53 base::Bind(&SerialServiceImpl::Create, io_task_runner, |
| 54 ui_task_runner, base::Passed(&request))); | 54 ui_task_runner, base::Passed(&request))); |
| 55 } | 55 } |
| 56 | 56 |
| 57 void SerialServiceImpl::GetDevices( | 57 void SerialServiceImpl::GetDevices( |
| 58 const mojo::Callback<void(mojo::Array<serial::DeviceInfoPtr>)>& callback) { | 58 const mojo::Callback<void(mojo::Array<serial::DeviceInfoPtr>)>& callback) { |
| 59 callback.Run(GetDeviceEnumerator()->GetDevices()); | 59 callback.Run(GetDeviceEnumerator()->GetDevices()); |
| 60 } | 60 } |
| 61 | 61 |
| 62 void SerialServiceImpl::Connect( | 62 void SerialServiceImpl::Connect( |
| 63 const mojo::String& path, | 63 const mojo::String& path, |
| 64 serial::ConnectionOptionsPtr options, | 64 serial::ConnectionOptionsPtr options, |
| 65 mojo::InterfaceRequest<serial::Connection> connection_request, | 65 mojo::InterfaceRequest<serial::Connection> connection_request, |
| 66 mojo::InterfaceRequest<serial::DataSink> sink, | 66 mojo::InterfaceRequest<serial::DataSink> sink, |
| 67 mojo::InterfaceRequest<serial::DataSource> source, | 67 mojo::InterfaceRequest<serial::DataSource> source, |
| 68 mojo::InterfacePtr<serial::DataSourceClient> source_client) { | 68 mojo::InterfacePtr<serial::DataSourceClient> source_client) { |
| 69 if (!IsValidPath(path)) | 69 if (!IsValidPath(path)) |
| 70 return; | 70 return; |
| 71 connection_factory_->CreateConnection(path, options.Pass(), | 71 connection_factory_->CreateConnection( |
| 72 connection_request.Pass(), sink.Pass(), | 72 path, std::move(options), std::move(connection_request), std::move(sink), |
| 73 source.Pass(), source_client.Pass()); | 73 std::move(source), std::move(source_client)); |
| 74 } | 74 } |
| 75 | 75 |
| 76 SerialDeviceEnumerator* SerialServiceImpl::GetDeviceEnumerator() { | 76 SerialDeviceEnumerator* SerialServiceImpl::GetDeviceEnumerator() { |
| 77 if (!device_enumerator_) | 77 if (!device_enumerator_) |
| 78 device_enumerator_ = SerialDeviceEnumerator::Create(); | 78 device_enumerator_ = SerialDeviceEnumerator::Create(); |
| 79 return device_enumerator_.get(); | 79 return device_enumerator_.get(); |
| 80 } | 80 } |
| 81 | 81 |
| 82 bool SerialServiceImpl::IsValidPath(const mojo::String& path) { | 82 bool SerialServiceImpl::IsValidPath(const mojo::String& path) { |
| 83 mojo::Array<serial::DeviceInfoPtr> devices( | 83 mojo::Array<serial::DeviceInfoPtr> devices( |
| 84 GetDeviceEnumerator()->GetDevices()); | 84 GetDeviceEnumerator()->GetDevices()); |
| 85 for (size_t i = 0; i < devices.size(); i++) { | 85 for (size_t i = 0; i < devices.size(); i++) { |
| 86 if (path == devices[i]->path) | 86 if (path == devices[i]->path) |
| 87 return true; | 87 return true; |
| 88 } | 88 } |
| 89 return false; | 89 return false; |
| 90 } | 90 } |
| 91 | 91 |
| 92 } // namespace device | 92 } // namespace device |
| OLD | NEW |