|
dxd - dynax driver framework 3.0.2
cross platform open source driver development framework
|
an ASIO client's own streaming group: the underlying SDK driver runs its session, ticked by the driver's own bufferSwitch callback More...
#include <dx_asio_client_device.h>
Public Types | |
| typedef settings<device_t>::client | client |
| typedef dx::clock<dx::free_run<dx::event<>>> | clock |
| the one clock of this group, its source freely selectable | |
| typedef device_t | device_t |
| typedef settings_promoted<device_t, store>::type | promoted |
| typedef settings_promoted<device_t, store>::type | promoted |
| typedef device_t::stream_t | stream_t |
| typedef settings<device_t>::transport | transport |
| the group's two sides, reached as transport::/client:: members | |
Public Member Functions | |
| void | conclude() noexcept |
| template<typename... args_t> | |
| group(args_t&&... args) | |
| void | run() override |
| the session starts on the registered streams, held until its thread ends | |
Static Public Member Functions | |
| static std::string | key(direction::direction direction, uint32_t) |
| static std::string | key(direction::direction direction, uint32_t strategy) |
Public Attributes | |
| listener<dx::listen<std::function<void(const uint32_t &)>>> | iosize_listener |
| a margin defaulted by the device's iosize (a host's tick is its buffer) reloads with it | |
| promoted | safety_offset [direction::directions] |
| promoted | safety_offset [direction::directions] |
| promoted<uint32_t> | start{0} |
| promoted<bool> | started{false} |
| std::map<decltype(stream_t::target.idx()), std::weak_ptr<stream_t>> | streams |
| shared stream ownership: central weak reference per stream, guarded by device | |
| promoted | sync_strategy |
| promoted | sync_strategy |
Protected Member Functions | |
| void | discharge() noexcept override |
| the thread's last act: the session's streams are released on the thread that visited them | |
| void | tick() override |
| the plain container has no transport of its own: a bus whose group moves the data overrides this, a group fed from outside (service, kernel, SDK callback) has nothing to do here | |
Protected Attributes | |
| device_t& | device |
| also the mutex serializing membership | |
| std::function<void()> | flush_hook= []{} |
| std::function<void()> | halt_hook= []{} |
| std::vector<std::shared_ptr<stream_t>> | members |
| the session's streams: taken before the thread starts, released at its end - the tick visits them without a lock | |
| dx::stream::clock::monitor* | monitor |
| device.monitor cached at the session's start: the tick never maps shared memory | |
| std::function<void()> | run_hook= []{} |
| const struct device_t::desc_t::stream* | sync_reference |
| device.sync_reference cached: the tick never reads the promoted | |
an ASIO client's own streaming group: the underlying SDK driver runs its session, ticked by the driver's own bufferSwitch callback
|
inherited |
|
inherited |
the one clock of this group, its source freely selectable
|
inherited |
|
inherited |
|
inherited |
|
inherited |
|
inherited |
the group's two sides, reached as transport::/client:: members
|
inline |
|
inlinenoexceptinherited |
Reimplemented in dx::stream::device< dx::stream::control< dx::device< std::string, preference > >, desc, stream< device< desc, preference, stream > > >, dx::stream::device< dx::stream::control< dx::device< std::string, preference > >, desc, stream< device< desc, preference, stream, group > >, group< device< desc, preference, stream, group > > >, dx::usb::pipe< device_t >, and dx::usb::pipe< device_t >.
|
inlineoverrideprotectednoexceptinherited |
the thread's last act: the session's streams are released on the thread that visited them
|
inlinestaticinherited |
|
inlinestaticinherited |
|
inlineoverrideinherited |
the session starts on the registered streams, held until its thread ends
|
inlineoverrideprotectedinherited |
the plain container has no transport of its own: a bus whose group moves the data overrides this, a group fed from outside (service, kernel, SDK callback) has nothing to do here
|
protectedinherited |
also the mutex serializing membership
|
protectedinherited |
|
protectedinherited |
|
inherited |
a margin defaulted by the device's iosize (a host's tick is its buffer) reloads with it
|
protectedinherited |
the session's streams: taken before the thread starts, released at its end - the tick visits them without a lock
|
protectedinherited |
device.monitor cached at the session's start: the tick never maps shared memory
|
protectedinherited |
|
inherited |
|
inherited |
|
inherited |
|
inherited |
|
inherited |
shared stream ownership: central weak reference per stream, guarded by device
|
protectedinherited |
device.sync_reference cached: the tick never reads the promoted
|
inherited |
|
inherited |