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.
5 #ifndef DEVICE_SERIAL_SERIAL_CONNECTION_H_
6 #define DEVICE_SERIAL_SERIAL_CONNECTION_H_
8 #include "base/memory/ref_counted.h"
9 #include "base/memory/scoped_ptr.h"
10 #include "device/serial/serial.mojom.h"
11 #include "third_party/mojo/src/mojo/public/cpp/bindings/interface_impl.h"
15 class DataSinkReceiver
;
16 class DataSourceSender
;
18 class SerialIoHandler
;
21 class SerialConnection
: public mojo::InterfaceImpl
<serial::Connection
> {
23 SerialConnection(scoped_refptr
<SerialIoHandler
> io_handler
,
24 mojo::InterfaceRequest
<serial::DataSink
> sink
,
25 mojo::InterfaceRequest
<serial::DataSource
> source
,
26 mojo::InterfacePtr
<serial::DataSourceClient
> source_client
);
27 ~SerialConnection() override
;
29 // mojo::InterfaceImpl<serial::Connection> overrides.
31 const mojo::Callback
<void(serial::ConnectionInfoPtr
)>& callback
) override
;
32 void SetOptions(serial::ConnectionOptionsPtr options
,
33 const mojo::Callback
<void(bool)>& callback
) override
;
34 void SetControlSignals(serial::HostControlSignalsPtr signals
,
35 const mojo::Callback
<void(bool)>& callback
) override
;
36 void GetControlSignals(
37 const mojo::Callback
<void(serial::DeviceControlSignalsPtr
)>& callback
)
39 void Flush(const mojo::Callback
<void(bool)>& callback
) override
;
42 void OnSendPipeReady(scoped_ptr
<ReadOnlyBuffer
> buffer
);
43 void OnSendCancelled(int32_t error
);
44 void OnReceivePipeReady(scoped_ptr
<WritableBuffer
> buffer
);
46 scoped_refptr
<SerialIoHandler
> io_handler_
;
47 scoped_refptr
<DataSinkReceiver
> receiver_
;
48 scoped_refptr
<DataSourceSender
> sender_
;
50 DISALLOW_COPY_AND_ASSIGN(SerialConnection
);
55 #endif // DEVICE_SERIAL_SERIAL_CONNECTION_H_