ConnectTask(scoped_refptr<SerialConnectionFactory> factory,
const std::string& path,
serial::ConnectionOptionsPtr options,
- mojo::InterfaceRequest<serial::Connection> connection_request);
+ mojo::InterfaceRequest<serial::Connection> connection_request,
+ mojo::InterfaceRequest<serial::DataSink> sink,
+ mojo::InterfaceRequest<serial::DataSource> source);
void Run();
private:
const std::string path_;
serial::ConnectionOptionsPtr options_;
mojo::InterfaceRequest<serial::Connection> connection_request_;
+ mojo::InterfaceRequest<serial::DataSink> sink_;
+ mojo::InterfaceRequest<serial::DataSource> source_;
scoped_refptr<SerialIoHandler> io_handler_;
DISALLOW_COPY_AND_ASSIGN(ConnectTask);
void SerialConnectionFactory::CreateConnection(
const std::string& path,
serial::ConnectionOptionsPtr options,
- mojo::InterfaceRequest<serial::Connection> connection_request) {
- scoped_refptr<ConnectTask> task(
- new ConnectTask(this, path, options.Pass(), connection_request.Pass()));
+ mojo::InterfaceRequest<serial::Connection> connection_request,
+ mojo::InterfaceRequest<serial::DataSink> sink,
+ mojo::InterfaceRequest<serial::DataSource> source) {
+ scoped_refptr<ConnectTask> task(new ConnectTask(this,
+ path,
+ options.Pass(),
+ connection_request.Pass(),
+ sink.Pass(),
+ source.Pass()));
task->Run();
}
scoped_refptr<SerialConnectionFactory> factory,
const std::string& path,
serial::ConnectionOptionsPtr options,
- mojo::InterfaceRequest<serial::Connection> connection_request)
+ mojo::InterfaceRequest<serial::Connection> connection_request,
+ mojo::InterfaceRequest<serial::DataSink> sink,
+ mojo::InterfaceRequest<serial::DataSource> source)
: factory_(factory),
path_(path),
options_(options.Pass()),
- connection_request_(connection_request.Pass()) {
+ connection_request_(connection_request.Pass()),
+ sink_(sink.Pass()),
+ source_(source.Pass()) {
}
void SerialConnectionFactory::ConnectTask::Run() {
}
void SerialConnectionFactory::ConnectTask::OnConnected(bool success) {
- DCHECK(io_handler_);
+ DCHECK(io_handler_.get());
if (!success)
return;
if (!options_)
FillDefaultConnectionOptions(options_.get());
if (!io_handler_->ConfigurePort(*options_))
return;
- mojo::BindToRequest(new SerialConnection(io_handler_), &connection_request_);
+ mojo::BindToRequest(
+ new SerialConnection(io_handler_, sink_.Pass(), source_.Pass()),
+ &connection_request_);
}
} // namespace device