co_usb
Loading...
Searching...
No Matches
resource.hpp
Go to the documentation of this file.
1
6#pragma once
7
9#include <libusb.h>
10#include <memory>
11
12namespace co_usb::transfer
13{
14
23{
24 explicit resource (int iso_packets = 0)
25 : m_utfer(libusb_alloc_transfer(iso_packets), libusb_free_transfer)
26 {
27 if (!m_utfer)
28 {
29 throw std::bad_alloc{};
30 }
31 }
32
33 auto get () const noexcept -> libusb_transfer *
34 {
35 return m_utfer.get();
36 }
37
38 private:
39 using deleter_t = std::decay_t<decltype(libusb_free_transfer)>;
40 std::unique_ptr<libusb_transfer, deleter_t> m_utfer{nullptr, libusb_free_transfer};
41};
42
43static_assert(detail::TransferResource<resource>, "Not a proper transfer resource");
44
45} // namespace co_usb::transfer
Definition complete_io.hpp:18
RAII wrapper over a transfer allocation.
Definition resource.hpp:23
auto get() const noexcept -> libusb_transfer *
Definition resource.hpp:33
resource(int iso_packets=0)
Definition resource.hpp:24
Transfer resource and transfer sequence concepts.