|
dxd - dynax driver framework 2.7.0d222
cross platform open source driver development framework
|
service client streaming device interface class More...
#include <dx_service_client_device.h>
Public Types | |
| typedef desc_t | desc_t |
| typedef shared::event | event_t |
Public Member Functions | |
| void | attach (channel_t **io[dx::stream::direction::directions][2], const std::vector< bool >(&channel_map)[2]) |
| void | conclude () noexcept override |
| dx_catchall_handler (this,) void conclude() noexcept override | |
| dx_catchall_rethrow () bool start(uint64_t frame | |
| dx_catchall_rethrow () virtual uint64_t frame() const | |
| void | hw_clock (abstract::event *event, uint32_t iosize) override try |
| virtual bool | hw_clock () const noexcept |
| void | info (std::ostream &os) noexcept override try |
| void | launch () override |
| virtual bool | start (uint64_t=0, unsigned int starting=1) |
| virtual unsigned int | stop (bool force=false) noexcept |
| std::string | string (uint32_t idx) try |
| void | wake () override |
| ~_device () override | |
Public Attributes | |
| dx::promoted< typename super::client_map > | clients |
| shared::guard< std::map< abstract::event *, std::pair< uint32_t, size_t > > > | clock |
| event -> {iosize, sample counter} | |
| promoted< uint32_t >::preference< decltype(dx::stream::control< dx::device< std::string, preference_t > >::preference)> | clocksource |
| dx::promoted< desc_t > | desc |
| chain< desc_t, request > | desc_server {pipe, desc, request::id::desc} |
| struct { | |
| shared::guard< std::map< abstract::event *, std::pair< uint32_t, size_t > > > clock | |
| event -> {iosize, sample counter} More... | |
| uint32_t iosize | |
| staging value for registration paths without their own iosize argument (macOS CF property bridge) More... | |
| } | hw |
| promoted< std::string >::preference< decltype(dx::stream::control< dx::device< std::string, preference_t > >::preference)> | icon |
| promoted< uint32_t >::preference< decltype(dx::stream::control< dx::device< std::string, preference_t > >::preference)> | iosize |
| uint32_t | iosize |
| staging value for registration paths without their own iosize argument (macOS CF property bridge) | |
| dx::stream::device::monitor | monitor |
| std::deque< std::function< void(control &)> > | notify |
| dx::shared::reference | reference |
| this process' crash-safe hold on the puuid's client-local preference store | |
| promoted< uint32_t >::preference< decltype(dx::stream::control< dx::device< std::string, preference_t > >::preference)> | safety_offset [direction::directions] |
| promoted< uint32_t >::preference< decltype(dx::stream::control< dx::device< std::string, preference_t > >::preference)> | samplerate |
| std::atomic< unsigned int > | started {} |
| std::map< decltype(desc_t::stream::target.idx()), std::weak_ptr< stream_t > > | streams |
| promoted< uint32_t >::preference< decltype(dx::stream::control< dx::device< std::string, preference_t > >::preference)> | sync_cycle_ticks |
| promoted< structdesc_t::stream * >::template preference< decltype(dx::stream::control< dx::device< std::string, preference_t > >::preference), uint32_t > | sync_reference |
| dx::stream::device::monitor | version |
Protected Types | |
| typedef service::request< service::stream::data< desc_t > > | request |
Protected Member Functions | |
| virtual void | flush () |
| virtual void | halt () |
Protected Attributes | |
| chain< uint32_t, request > | clocksource_server {pipe, super::clocksource, request::id::clocksource} |
| chain< uint32_t, request > | iosize_server {pipe, super::iosize, request::id::iosize} |
| pipe< request > | pipe {std::string{this->driver.product_id}+ "/"+ this->id} |
| chain< uint32_t, request > | safety_offset_server [2] |
| chain< uint32_t, request > | samplerate_server {pipe, super::samplerate, request::id::samplerate} |
| std::recursive_mutex | start_stop_in_progress |
| start/stop operation in progress | |
service client streaming device interface class
| In | case of an error returned by the underlaying API the device class throws a dx::exception. |
|
inherited |
| typedef shared::event dx::service::client::_device< desc_t, preference_t, stream_t >::event_t |
|
protected |
|
inlineoverride |
|
inlineinherited |
|
inlineoverridenoexcept |
|
inlineoverridenoexceptinherited |
| dx::service::client::_device< desc_t, preference_t, stream_t >::dx_catchall_rethrow | ( | ) |
|
inline |
|
inlineprotectedvirtualinherited |
Reimplemented in dx::stream::stream< device_t, dx::circular, usb::pipe< device_t > >.
|
inlineprotectedvirtualinherited |
Reimplemented in dx::coreaudio::_device< desc_t, preference_t, stream_t >, dx::coreaudio::_device< desc_t, preference_t, stream_t< device< desc_t, preference_t, stream_t > > >, dx::coreaudio::_device< dx::virtuel::stream::desc, cf::preference, dx::stream::stream< device< dx::virtuel::stream::desc, cf::preference, dx::stream::stream > > >, dx::coreaudio::_device< dx::virtuel::stream::desc, cf::preference, stream< device< dx::virtuel::stream::desc, cf::preference, stream > > >, dx::coreaudio::pod::device< desc_t, preference_t, stream_t >, dx::proxy::stream::_device< desc_t, preference_t, stream_t >, dx::proxy::stream::_device< desc_t, preference_t, stream_t< device< desc_t, preference_t, stream_t > > >, dx::proxy::stream::_device< dx::stream::desc<>, dx::preference, stream< device< dx::stream::desc<>, dx::preference, stream > > >, dx::stream::pin< device_t, _circular_t >, dx::stream::stream< device_t, dx::circular, usb::pipe< device_t > >, dx::usb::platform::pipe< device_t, interface_t >, dx::usb::platform::pipe< device_t, interface_t >, dx::usb::platform::pipe< device<>, interface >, dx::usb::platform::pipe< device_t, interface >, dx::usb::platform::pipe< device_t, usb::interface >, dx::usb::platform::pipe< device_t, usb::interface >, dx::usb::stream::_device< desc_t, preference_t, stream_t >, dx::usb::stream::_device< desc_t, dx::preference, pipe< device< desc_t, dx::preference, pipe > > >, dx::usb::stream::_device< desc_t, preference_t, stream_t< device< desc_t, preference_t, stream_t > > >, and dx::usb::stream::pipe< device_t, circular_t, stream_t >.
|
inlineoverridevirtual |
|
inlinevirtualnoexceptinherited |
Reimplemented in dx::virtuel::stream::_device< desc_t, preference_t, stream_t >, and dx::virtuel::stream::_device< desc_t, preference_t, stream_t< device< desc_t, preference_t, stream_t > > >.
|
inlineoverridenoexceptinherited |
|
inlineoverride |
|
inlinevirtualinherited |
result indicates if start changed the state.
Reimplemented in dx::asio::client::_device< desc_t, preference_t, stream_t >, dx::asio::client::_device< desc, preference, stream< device< desc, preference, stream > > >, dx::asio::client::_device< desc_t, preference_t, stream_t< device< desc_t, preference_t, stream_t > > >, dx::coreaudio::_device< desc_t, preference_t, stream_t >, dx::coreaudio::_device< desc_t, preference_t, stream_t< device< desc_t, preference_t, stream_t > > >, dx::coreaudio::_device< dx::virtuel::stream::desc, cf::preference, dx::stream::stream< device< dx::virtuel::stream::desc, cf::preference, dx::stream::stream > > >, dx::coreaudio::_device< dx::virtuel::stream::desc, cf::preference, stream< device< dx::virtuel::stream::desc, cf::preference, stream > > >, dx::coreaudio::pod::device< desc_t, preference_t, stream_t >, dx::stream::pin< device_t, _circular_t >, dx::stream::stream< device_t, dx::circular, usb::pipe< device_t > >, and dx::usb::stream::pipe< device_t, circular_t, stream_t >.
|
inlinevirtualnoexceptinherited |
result indicates the amount of stopped start references
|
inline |
|
inlineoverrideinherited |
| dx::promoted<typename super::client_map> dx::service::client::_device< desc_t, preference_t, stream_t >::clients |
|
inherited |
event -> {iosize, sample counter}
|
inherited |
|
protected |
| dx::promoted<desc_t> dx::service::client::_device< desc_t, preference_t, stream_t >::desc |
| chain<desc_t, request> dx::service::client::_device< desc_t, preference_t, stream_t >::desc_server {pipe, desc, request::id::desc} |
| struct { ... } dx::stream::device< dx::stream::control< dx::device< std::string, preference_t > >, desc_t, stream_t >::hw |
|
inherited |
|
inherited |
|
inherited |
staging value for registration paths without their own iosize argument (macOS CF property bridge)
|
protected |
|
inherited |
|
inherited |
|
protected |
| dx::shared::reference dx::service::client::_device< desc_t, preference_t, stream_t >::reference |
this process' crash-safe hold on the puuid's client-local preference store
dx::device::preference (driver.preference[puuid]) is this client process' own settings cache for the device - distinct from the service's own copy (a different registry hive: the service runs as LocalSystem, clients as the interactive user). Live values (samplerate, iosize, ...) already reach this object independently via the chain<> pipe broadcast below; what preference persists here is only what should survive this process disconnecting and reconnecting later.
The preference path is namespaced per connecting application (see the driver constructor in dx_service_client_driver.h, via process::name()), not just per device: two different applications must not share one settings key, but several instances of the same application legitimately should - and can therefore hold that identical key open at the same time. conclude() must not simply erase it on every single instance's own disconnect (schedule_erase only ever fires for non-persistent devices to begin with) - that would delete settings a sibling instance still actively uses, racing its concurrent registry access.
reference is this instance's hold on that shared identity: holding it signals "I am interested" to every other process under the same name, with no protocol beyond its own construction/release() - the OS releases the underlying named mutex (Windows) / advisory lock (macOS) on process exit even on a crash, so this can never desync the way a value manually incremented/decremented in memory would (dx_shared_reference.h). release() reports whether this was the last holder; only then may conclude() erase.
|
inherited |
|
protected |
|
inherited |
|
protected |
|
protectedinherited |
start/stop operation in progress
|
inherited |
|
inherited |
|
inherited |
|
inherited |
|
inherited |
| (c) copyright 2009 dynamic acoustics e.U. | generated on |