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 "base/bind.h" | 7 #include "base/bind.h" |
8 #include "base/location.h" | 8 #include "base/location.h" |
9 #include "device/serial/serial_connection.h" | 9 #include "device/serial/serial_connection.h" |
10 #include "device/serial/serial_io_handler.h" | 10 #include "device/serial/serial_io_handler.h" |
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
54 mojo::InterfaceRequest<serial::DataSink> sink_; | 54 mojo::InterfaceRequest<serial::DataSink> sink_; |
55 mojo::InterfaceRequest<serial::DataSource> source_; | 55 mojo::InterfaceRequest<serial::DataSource> source_; |
56 mojo::InterfacePtr<serial::DataSourceClient> source_client_; | 56 mojo::InterfacePtr<serial::DataSourceClient> source_client_; |
57 scoped_refptr<SerialIoHandler> io_handler_; | 57 scoped_refptr<SerialIoHandler> io_handler_; |
58 | 58 |
59 DISALLOW_COPY_AND_ASSIGN(ConnectTask); | 59 DISALLOW_COPY_AND_ASSIGN(ConnectTask); |
60 }; | 60 }; |
61 | 61 |
62 SerialConnectionFactory::SerialConnectionFactory( | 62 SerialConnectionFactory::SerialConnectionFactory( |
63 const IoHandlerFactory& io_handler_factory, | 63 const IoHandlerFactory& io_handler_factory, |
64 scoped_refptr<base::MessageLoopProxy> connect_message_loop) | 64 scoped_refptr<base::SingleThreadTaskRunner> connect_task_runner) |
65 : io_handler_factory_(io_handler_factory), | 65 : io_handler_factory_(io_handler_factory), |
66 connect_message_loop_(connect_message_loop) { | 66 connect_task_runner_(connect_task_runner) { |
67 } | 67 } |
68 | 68 |
69 void SerialConnectionFactory::CreateConnection( | 69 void SerialConnectionFactory::CreateConnection( |
70 const std::string& path, | 70 const std::string& path, |
71 serial::ConnectionOptionsPtr options, | 71 serial::ConnectionOptionsPtr options, |
72 mojo::InterfaceRequest<serial::Connection> connection_request, | 72 mojo::InterfaceRequest<serial::Connection> connection_request, |
73 mojo::InterfaceRequest<serial::DataSink> sink, | 73 mojo::InterfaceRequest<serial::DataSink> sink, |
74 mojo::InterfaceRequest<serial::DataSource> source, | 74 mojo::InterfaceRequest<serial::DataSource> source, |
75 mojo::InterfacePtr<serial::DataSourceClient> source_client) { | 75 mojo::InterfacePtr<serial::DataSourceClient> source_client) { |
76 scoped_refptr<ConnectTask> task( | 76 scoped_refptr<ConnectTask> task( |
(...skipping 20 matching lines...) Expand all Loading... |
97 sink_(sink.Pass()), | 97 sink_(sink.Pass()), |
98 source_(source.Pass()), | 98 source_(source.Pass()), |
99 source_client_(source_client.Pass()) { | 99 source_client_(source_client.Pass()) { |
100 if (!options_) { | 100 if (!options_) { |
101 options_ = serial::ConnectionOptions::New(); | 101 options_ = serial::ConnectionOptions::New(); |
102 } | 102 } |
103 FillDefaultConnectionOptions(options_.get()); | 103 FillDefaultConnectionOptions(options_.get()); |
104 } | 104 } |
105 | 105 |
106 void SerialConnectionFactory::ConnectTask::Run() { | 106 void SerialConnectionFactory::ConnectTask::Run() { |
107 factory_->connect_message_loop_->PostTask( | 107 factory_->connect_task_runner_->PostTask( |
108 FROM_HERE, | 108 FROM_HERE, |
109 base::Bind(&SerialConnectionFactory::ConnectTask::Connect, this)); | 109 base::Bind(&SerialConnectionFactory::ConnectTask::Connect, this)); |
110 } | 110 } |
111 | 111 |
112 SerialConnectionFactory::ConnectTask::~ConnectTask() { | 112 SerialConnectionFactory::ConnectTask::~ConnectTask() { |
113 } | 113 } |
114 | 114 |
115 void SerialConnectionFactory::ConnectTask::Connect() { | 115 void SerialConnectionFactory::ConnectTask::Connect() { |
116 io_handler_ = factory_->io_handler_factory_.Run(); | 116 io_handler_ = factory_->io_handler_factory_.Run(); |
117 io_handler_->Open( | 117 io_handler_->Open( |
118 path_, *options_, | 118 path_, *options_, |
119 base::Bind(&SerialConnectionFactory::ConnectTask::OnConnected, this)); | 119 base::Bind(&SerialConnectionFactory::ConnectTask::OnConnected, this)); |
120 } | 120 } |
121 | 121 |
122 void SerialConnectionFactory::ConnectTask::OnConnected(bool success) { | 122 void SerialConnectionFactory::ConnectTask::OnConnected(bool success) { |
123 DCHECK(io_handler_.get()); | 123 DCHECK(io_handler_.get()); |
124 if (!success) { | 124 if (!success) { |
125 return; | 125 return; |
126 } | 126 } |
127 | 127 |
128 mojo::BindToRequest( | 128 mojo::BindToRequest( |
129 new SerialConnection(io_handler_, sink_.Pass(), source_.Pass(), | 129 new SerialConnection(io_handler_, sink_.Pass(), source_.Pass(), |
130 source_client_.Pass()), | 130 source_client_.Pass()), |
131 &connection_request_); | 131 &connection_request_); |
132 } | 132 } |
133 | 133 |
134 } // namespace device | 134 } // namespace device |
OLD | NEW |