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 |