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 3// found in the LICENSE file. 4 5#ifndef DEVICE_SERIAL_SERIAL_CONNECTION_FACTORY_H_ 6#define DEVICE_SERIAL_SERIAL_CONNECTION_FACTORY_H_ 7 8#include <string> 9 10#include "base/callback.h" 11#include "base/memory/ref_counted.h" 12#include "base/message_loop/message_loop_proxy.h" 13#include "device/serial/data_stream.mojom.h" 14#include "device/serial/serial.mojom.h" 15#include "mojo/public/cpp/bindings/interface_request.h" 16 17namespace device { 18 19class SerialIoHandler; 20 21class SerialConnectionFactory 22 : public base::RefCountedThreadSafe<SerialConnectionFactory> { 23 public: 24 typedef base::Callback<scoped_refptr<SerialIoHandler>()> IoHandlerFactory; 25 26 SerialConnectionFactory( 27 const IoHandlerFactory& io_handler_factory, 28 scoped_refptr<base::MessageLoopProxy> connect_message_loop); 29 30 void CreateConnection( 31 const std::string& path, 32 serial::ConnectionOptionsPtr options, 33 mojo::InterfaceRequest<serial::Connection> connection_request, 34 mojo::InterfaceRequest<serial::DataSink> sink, 35 mojo::InterfaceRequest<serial::DataSource> source); 36 37 private: 38 friend class base::RefCountedThreadSafe<SerialConnectionFactory>; 39 class ConnectTask; 40 41 virtual ~SerialConnectionFactory(); 42 43 const IoHandlerFactory io_handler_factory_; 44 scoped_refptr<base::MessageLoopProxy> connect_message_loop_; 45 46 DISALLOW_COPY_AND_ASSIGN(SerialConnectionFactory); 47}; 48 49} // namespace device 50 51#endif // DEVICE_SERIAL_SERIAL_CONNECTION_FACTORY_H_ 52