co_usb
Loading...
Searching...
No Matches
Classes | Public Member Functions | Friends | List of all members
co_usb::device_acceptor Struct Reference

Accepts devices via hotplug. More...

#include <device_acceptor.hpp>

Classes

struct  acceptor_awaitable
 Internal awaitable type for device_acceptor. More...
 

Public Member Functions

 device_acceptor (libusb_context *ctx, std::pmr::memory_resource *memory_resource=std::pmr::get_default_resource())
 
 ~device_acceptor ()
 
 device_acceptor (const device_acceptor &)=delete
 
device_acceptoroperator= (const device_acceptor &)=delete
 
 device_acceptor (device_acceptor &&)=delete
 
device_acceptoroperator= (device_acceptor &&)=delete
 
boost::capy::io_task< device_refaccept (device_triplet triplet)
 accepts a device by its triplet
 

Friends

struct acceptor_awaitable
 

Detailed Description

Accepts devices via hotplug.

Note
Totally unrelated to hotplug_awaitable in any way

This class maintains a pool of currently connected devices and performs the book keeping to ensure that the same device is not accepted while already connected.

Note
There can only be a single accept point for each acceptor.

Internal map is allocated using std::pmr::polymorphic_allocator to allow allocator propagation from coroutine frame allocator.

Constructor & Destructor Documentation

◆ device_acceptor() [1/3]

co_usb::device_acceptor::device_acceptor ( libusb_context ctx,
std::pmr::memory_resource *  memory_resource = std::pmr::get_default_resource() 
)
explicit

◆ ~device_acceptor()

co_usb::device_acceptor::~device_acceptor ( )

◆ device_acceptor() [2/3]

co_usb::device_acceptor::device_acceptor ( const device_acceptor )
delete

◆ device_acceptor() [3/3]

co_usb::device_acceptor::device_acceptor ( device_acceptor &&  )
delete

Member Function Documentation

◆ accept()

boost::capy::io_task< co_usb::device_ref > co_usb::device_acceptor::accept ( co_usb::device_triplet  triplet)

accepts a device by its triplet

waits until a device with a provided triplet is attached. Can avoid suspension if the device was attached before the accept call.

Returns
reference to an accepted device
error code co_usb::usb_error::interrupted on cancellation or when acceptor dtor was called
error code co_usb::usb_error::no_device if device was detached while suspending & acquiring the internal lock

◆ operator=() [1/2]

device_acceptor & co_usb::device_acceptor::operator= ( const device_acceptor )
delete

◆ operator=() [2/2]

device_acceptor & co_usb::device_acceptor::operator= ( device_acceptor &&  )
delete

Friends And Related Symbol Documentation

◆ acceptor_awaitable


The documentation for this struct was generated from the following files: