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 17 namespace device { 18 19 class SerialIoHandler; 20 21 class 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