| /* |
| * Copyright 2020 The Chromium OS Authors. All rights reserved. |
| * Use of this source code is governed by a BSD-style license that can be |
| * found in the LICENSE file. |
| */ |
| |
| #ifndef ARC_ADBD_ARCVM_USB_TO_SOCK_H_ |
| #define ARC_ADBD_ARCVM_USB_TO_SOCK_H_ |
| |
| #include <base/threading/thread.h> |
| |
| namespace adbd { |
| |
| // Provides a unidirectional channel to transfer. |
| // ADB data from a USB endpoint to a socket. |
| class ArcVmUsbToSock { |
| public: |
| ArcVmUsbToSock(const int sock_fd, const int usb_fd); |
| |
| // Disallows copy and assignment. |
| ArcVmUsbToSock(const ArcVmUsbToSock&) = delete; |
| ArcVmUsbToSock& operator=(const ArcVmUsbToSock&) = delete; |
| |
| ~ArcVmUsbToSock(); |
| |
| // Kicks off the channel. |
| bool Start(); |
| |
| private: |
| void Run(); |
| const int sock_fd_; |
| const int usb_fd_; |
| base::Thread thread_; |
| }; |
| |
| } // namespace adbd |
| |
| #endif // ARC_ADBD_ARCVM_USB_TO_SOCK_H_ |