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_connection_factory.h" | 5 #include "device/serial/serial_connection_factory.h" |
6 | 6 |
| 7 #include <utility> |
| 8 |
7 #include "base/bind.h" | 9 #include "base/bind.h" |
8 #include "base/location.h" | 10 #include "base/location.h" |
9 #include "base/macros.h" | 11 #include "base/macros.h" |
10 #include "device/serial/serial_connection.h" | 12 #include "device/serial/serial_connection.h" |
11 #include "device/serial/serial_io_handler.h" | 13 #include "device/serial/serial_io_handler.h" |
12 | 14 |
13 namespace device { | 15 namespace device { |
14 namespace { | 16 namespace { |
15 | 17 |
16 void FillDefaultConnectionOptions(serial::ConnectionOptions* options) { | 18 void FillDefaultConnectionOptions(serial::ConnectionOptions* options) { |
(...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
67 connect_task_runner_(connect_task_runner) { | 69 connect_task_runner_(connect_task_runner) { |
68 } | 70 } |
69 | 71 |
70 void SerialConnectionFactory::CreateConnection( | 72 void SerialConnectionFactory::CreateConnection( |
71 const std::string& path, | 73 const std::string& path, |
72 serial::ConnectionOptionsPtr options, | 74 serial::ConnectionOptionsPtr options, |
73 mojo::InterfaceRequest<serial::Connection> connection_request, | 75 mojo::InterfaceRequest<serial::Connection> connection_request, |
74 mojo::InterfaceRequest<serial::DataSink> sink, | 76 mojo::InterfaceRequest<serial::DataSink> sink, |
75 mojo::InterfaceRequest<serial::DataSource> source, | 77 mojo::InterfaceRequest<serial::DataSource> source, |
76 mojo::InterfacePtr<serial::DataSourceClient> source_client) { | 78 mojo::InterfacePtr<serial::DataSourceClient> source_client) { |
77 scoped_refptr<ConnectTask> task( | 79 scoped_refptr<ConnectTask> task(new ConnectTask( |
78 new ConnectTask(this, path, options.Pass(), connection_request.Pass(), | 80 this, path, std::move(options), std::move(connection_request), |
79 sink.Pass(), source.Pass(), source_client.Pass())); | 81 std::move(sink), std::move(source), std::move(source_client))); |
80 task->Run(); | 82 task->Run(); |
81 } | 83 } |
82 | 84 |
83 SerialConnectionFactory::~SerialConnectionFactory() { | 85 SerialConnectionFactory::~SerialConnectionFactory() { |
84 } | 86 } |
85 | 87 |
86 SerialConnectionFactory::ConnectTask::ConnectTask( | 88 SerialConnectionFactory::ConnectTask::ConnectTask( |
87 scoped_refptr<SerialConnectionFactory> factory, | 89 scoped_refptr<SerialConnectionFactory> factory, |
88 const std::string& path, | 90 const std::string& path, |
89 serial::ConnectionOptionsPtr options, | 91 serial::ConnectionOptionsPtr options, |
90 mojo::InterfaceRequest<serial::Connection> connection_request, | 92 mojo::InterfaceRequest<serial::Connection> connection_request, |
91 mojo::InterfaceRequest<serial::DataSink> sink, | 93 mojo::InterfaceRequest<serial::DataSink> sink, |
92 mojo::InterfaceRequest<serial::DataSource> source, | 94 mojo::InterfaceRequest<serial::DataSource> source, |
93 mojo::InterfacePtr<serial::DataSourceClient> source_client) | 95 mojo::InterfacePtr<serial::DataSourceClient> source_client) |
94 : factory_(factory), | 96 : factory_(factory), |
95 path_(path), | 97 path_(path), |
96 options_(options.Pass()), | 98 options_(std::move(options)), |
97 connection_request_(connection_request.Pass()), | 99 connection_request_(std::move(connection_request)), |
98 sink_(sink.Pass()), | 100 sink_(std::move(sink)), |
99 source_(source.Pass()), | 101 source_(std::move(source)), |
100 source_client_(source_client.PassInterface()) { | 102 source_client_(source_client.PassInterface()) { |
101 if (!options_) { | 103 if (!options_) { |
102 options_ = serial::ConnectionOptions::New(); | 104 options_ = serial::ConnectionOptions::New(); |
103 } | 105 } |
104 FillDefaultConnectionOptions(options_.get()); | 106 FillDefaultConnectionOptions(options_.get()); |
105 } | 107 } |
106 | 108 |
107 void SerialConnectionFactory::ConnectTask::Run() { | 109 void SerialConnectionFactory::ConnectTask::Run() { |
108 factory_->connect_task_runner_->PostTask( | 110 factory_->connect_task_runner_->PostTask( |
109 FROM_HERE, | 111 FROM_HERE, |
110 base::Bind(&SerialConnectionFactory::ConnectTask::Connect, this)); | 112 base::Bind(&SerialConnectionFactory::ConnectTask::Connect, this)); |
111 } | 113 } |
112 | 114 |
113 SerialConnectionFactory::ConnectTask::~ConnectTask() { | 115 SerialConnectionFactory::ConnectTask::~ConnectTask() { |
114 } | 116 } |
115 | 117 |
116 void SerialConnectionFactory::ConnectTask::Connect() { | 118 void SerialConnectionFactory::ConnectTask::Connect() { |
117 io_handler_ = factory_->io_handler_factory_.Run(); | 119 io_handler_ = factory_->io_handler_factory_.Run(); |
118 io_handler_->Open( | 120 io_handler_->Open( |
119 path_, *options_, | 121 path_, *options_, |
120 base::Bind(&SerialConnectionFactory::ConnectTask::OnConnected, this)); | 122 base::Bind(&SerialConnectionFactory::ConnectTask::OnConnected, this)); |
121 } | 123 } |
122 | 124 |
123 void SerialConnectionFactory::ConnectTask::OnConnected(bool success) { | 125 void SerialConnectionFactory::ConnectTask::OnConnected(bool success) { |
124 DCHECK(io_handler_.get()); | 126 DCHECK(io_handler_.get()); |
125 if (!success) { | 127 if (!success) { |
126 return; | 128 return; |
127 } | 129 } |
128 | 130 |
129 new SerialConnection(io_handler_, sink_.Pass(), source_.Pass(), | 131 new SerialConnection(io_handler_, std::move(sink_), std::move(source_), |
130 mojo::MakeProxy(source_client_.Pass()), | 132 mojo::MakeProxy(std::move(source_client_)), |
131 connection_request_.Pass()); | 133 std::move(connection_request_)); |
132 } | 134 } |
133 | 135 |
134 } // namespace device | 136 } // namespace device |
OLD | NEW |