dxd - dynax driver framework 2.6.0d212
cross platform open source driver development framework
Loading...
Searching...
No Matches
dx::asio::client::driver< device_t, devices > Class Template Referenceabstract

#include <dx_asio_client_driver.h>

Inheritance diagram for dx::asio::client::driver< device_t, devices >:
Collaboration diagram for dx::asio::client::driver< device_t, devices >:

Classes

struct  property

Public Member Functions

virtual DX_PRAGMA_IGNORE_RETURN_VALUE_END bool boot () try
DX_PRAGMA_IGNORE_RETURN_VALUE_END void exception (const class exception &exception, bool filtered=false) const noexcept override try
 notification exception handler
virtual void exception (const exception &exception, bool filtered=false) const noexcept=0
 notification exception handler
virtual bool shutdown () try
 client driver::shutdown/boot(): override to shutdown/boot host driver

Public Attributes

elements
 STL member.
dx::promoted< dx::loghost
 host logging control
keys
 STL member.
bool launched {}
log log {}
preference_t preference
const char * product_id
uint32_t version = DX_VERSION32

Protected Types

typedef decltype(device_t::id) device_id_t

Protected Member Functions

virtual void add (const device_id_t &)=0
 adds a new device to the device list
void add (const device_id_t &device_id) override try
 adds a new device to the device list
virtual void arrived ()
 notify device arrivals completed stub
virtual void arrived (device_t &)
 notify specific device arrival stub
 catch (...)
 catch (...)
 catch (...)
 catch (...)
DX_PRAGMA_IGNORE_RETURN_VALUE_BEGIN catch (const dx::exception &__dx_exception)
DX_PRAGMA_IGNORE_RETURN_VALUE_BEGIN catch (const dx::exception &__dx_exception)
DX_PRAGMA_IGNORE_RETURN_VALUE_BEGIN catch (const dx::exception &__dx_exception)
DX_PRAGMA_IGNORE_RETURN_VALUE_BEGIN catch (const dx::exception &__dx_exception)
 catch (const std::exception &__std_exception)
 catch (const std::exception &__std_exception)
 catch (const std::exception &__std_exception)
 catch (const std::exception &__std_exception)
virtual DX_PRAGMA_IGNORE_RETURN_VALUE_END void clear () noexcept try
 replaces std::map::clear to call virtual notification methods
DX_PRAGMA_IGNORE_RETURN_VALUE_END void conclude () noexcept override try
 conclude notification: object will be removed. If you overwrite conclude() you also need to overwrite destructor and check if its needed to be called from there.
 driver (const match &matching_ids, const char *product_id, const decltype(super::preference)&preference, dx::log log={})
 the ASIO client driver interface class constructor
 driver (const match &matching_ids, const char *product_id, dx::log log={})
 dx_catchall_handler (this,) virtual driver &operator<<(std
 restores device settings
void info (std::ostream &os) noexcept override
 log object class information
void launch () override
 launch notification: object mounted and ready to use
virtual operator bool () const noexcept
virtual driveroperator<< (const char *file)
virtual driveroperator>> (const char *file) const
virtual driveroperator>> (std::ostream &ostream) const
 saves device tree
virtual void remove (const device_id_t &)=0
 finds and removes a device from the device list
DX_PRAGMA_IGNORE_RETURN_VALUE_END void remove (const device_id_t &device_id) override try
 finds and removes a device from the device list
virtual void removed () noexcept
 notify device removals completed stub
virtual void removed (device_t &) noexcept
 notify specific device removal stub
virtual void scan () try
void sleep () override
 < notify system will sleep
void wake () override

Static Protected Member Functions

static uint32_t thunk_idx (callbacks *callbacks)

Protected Attributes

dx::registry asio {asio::property::root, HKEY_LOCAL_MACHINE, KEY_NOTIFY, {[this](){scan();}}}
promoted< uint32_tconnection_id
dx_catchall_rethrow() public typedef decltype(matching_idsmatch
std::set< dx::guidmatching_ids

Static Protected Attributes

static auto thunks

Member Typedef Documentation

◆ device_id_t

typedef decltype(device_t::id) dx::map::driver< device_t >::device_id_t
protectedinherited

Constructor & Destructor Documentation

◆ driver() [1/2]

template<class device_t, size_t devices = 100>
dx::asio::client::driver< device_t, devices >::driver ( const match & matching_ids,
const char * product_id,
const decltype(super::preference)& preference,
dx::log log = {} )
inlineprotected

the ASIO client driver interface class constructor

Parameters
matching_idsthe matching ASIO client driver IDs identifying the driver interface
product_idASIO client driver ID
preferencepreference
loglog settings

◆ driver() [2/2]

template<class device_t, size_t devices = 100>
dx::asio::client::driver< device_t, devices >::driver ( const match & matching_ids,
const char * product_id,
dx::log log = {} )
inlineprotected

Member Function Documentation

◆ add() [1/2]

template<typename device_id_t, typename preference_t>
virtual void dx::driver< device_id_t, preference_t >::add ( const device_id_t & )
protectedpure virtualinherited

adds a new device to the device list

Exceptions
dx::exception

◆ add() [2/2]

void dx::map::driver< device_t >::add ( const device_id_t & device_id)
inlineoverrideprotectedinherited

adds a new device to the device list

Exceptions
dx::exception
Here is the call graph for this function:
Here is the caller graph for this function:

◆ arrived() [1/2]

( )
protectedvirtualinherited

notify device arrivals completed stub

Reimplemented from dx::driver< device_id_t, preference_t >.

Here is the caller graph for this function:

◆ arrived() [2/2]

virtual void dx::map::driver< device_t >::arrived ( device_t & )
inlineprotectedvirtualinherited

notify specific device arrival stub

Reimplemented in dx::stream::driver< dx::map::driver< device_t > >, and dx::stream::driver< map::driver< device_t > >.

Here is the caller graph for this function:

◆ boot()

template<typename device_id_t, typename preference_t>
virtual DX_PRAGMA_IGNORE_RETURN_VALUE_END bool dx::driver< device_id_t, preference_t >::boot ( )
inlinevirtualinherited
Here is the caller graph for this function:

◆ catch() [1/12]

dx::map::driver< device_t >::catch ( ...)
inlineprotectedinherited

◆ catch() [2/12]

dx::map::driver< device_t >::catch ( ...)
inlineprotectedinherited

◆ catch() [3/12]

dx::map::driver< device_t >::catch ( ...)
inlineprotectedinherited

◆ catch() [4/12]

dx::map::driver< device_t >::catch ( ...)
inlineprotectedinherited

◆ catch() [5/12]

DX_PRAGMA_IGNORE_RETURN_VALUE_BEGIN dx::map::driver< device_t >::catch ( const dx::exception & __dx_exception)
inlineprotectedinherited

◆ catch() [6/12]

DX_PRAGMA_IGNORE_RETURN_VALUE_BEGIN dx::map::driver< device_t >::catch ( const dx::exception & __dx_exception)
inlineprotectedinherited

◆ catch() [7/12]

DX_PRAGMA_IGNORE_RETURN_VALUE_BEGIN dx::map::driver< device_t >::catch ( const dx::exception & __dx_exception)
inlineprotectedinherited

◆ catch() [8/12]

DX_PRAGMA_IGNORE_RETURN_VALUE_BEGIN dx::map::driver< device_t >::catch ( const dx::exception & __dx_exception)
inlineprotectedinherited

◆ catch() [9/12]

dx::map::driver< device_t >::catch ( const std::exception & __std_exception)
inlineprotectedinherited

◆ catch() [10/12]

dx::map::driver< device_t >::catch ( const std::exception & __std_exception)
inlineprotectedinherited

◆ catch() [11/12]

dx::map::driver< device_t >::catch ( const std::exception & __std_exception)
inlineprotectedinherited

◆ catch() [12/12]

dx::map::driver< device_t >::catch ( const std::exception & __std_exception)
inlineprotectedinherited

◆ clear()

virtual DX_PRAGMA_IGNORE_RETURN_VALUE_END void dx::map::driver< device_t >::clear ( )
inlineprotectedvirtualnoexceptinherited

replaces std::map::clear to call virtual notification methods

Here is the call graph for this function:
Here is the caller graph for this function:

◆ conclude()

DX_PRAGMA_IGNORE_RETURN_VALUE_END void dx::map::driver< device_t >::conclude ( )
inlineoverrideprotectedvirtualnoexceptinherited

conclude notification: object will be removed. If you overwrite conclude() you also need to overwrite destructor and check if its needed to be called from there.

Reimplemented from dx::object.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ dx_catchall_handler()

dx::map::driver< device_t >::dx_catchall_handler ( this ) &
inlineprotectedinherited

restores device settings

◆ exception() [1/2]

template<typename device_id_t, typename preference_t>
DX_PRAGMA_IGNORE_RETURN_VALUE_END void dx::driver< device_id_t, preference_t >::exception ( const class exception & exception,
bool filtered = false ) const
inlineoverridenoexceptinherited

notification exception handler

Here is the caller graph for this function:

◆ exception() [2/2]

◆ info()

template<class device_t, size_t devices = 100>
void dx::asio::client::driver< device_t, devices >::info ( std::ostream & os)
inlineoverrideprotectedvirtualnoexcept

log object class information

Reimplemented from dx::object.

Here is the call graph for this function:

◆ launch()

template<class device_t, size_t devices = 100>
void dx::asio::client::driver< device_t, devices >::launch ( )
inlineoverrideprotectedvirtual

launch notification: object mounted and ready to use

Reimplemented from dx::object.

Here is the call graph for this function:

◆ operator bool()

template<class device_t, size_t devices = 100>
virtual dx::asio::client::driver< device_t, devices >::operator bool ( ) const
inlineprotectedvirtualnoexcept

◆ operator<<()

virtual driver & dx::map::driver< device_t >::operator<< ( const char * file)
inlineprotectedvirtualinherited
Here is the call graph for this function:

◆ operator>>() [1/2]

virtual driver & dx::map::driver< device_t >::operator>> ( const char * file) const
inlineprotectedvirtualinherited
Here is the call graph for this function:

◆ operator>>() [2/2]

virtual driver & dx::map::driver< device_t >::operator>> ( std::ostream & ostream) const
inlineprotectedvirtualinherited

saves device tree

Reimplemented in dx::coreaudio::driver< device_t >.

◆ remove() [1/2]

template<typename device_id_t, typename preference_t>
virtual void dx::driver< device_id_t, preference_t >::remove ( const device_id_t & )
protectedpure virtualinherited

finds and removes a device from the device list

◆ remove() [2/2]

DX_PRAGMA_IGNORE_RETURN_VALUE_END void dx::map::driver< device_t >::remove ( const device_id_t & device_id)
inlineoverrideprotectedinherited

finds and removes a device from the device list

Exceptions
dx::exception
Here is the call graph for this function:
Here is the caller graph for this function:

◆ removed() [1/2]

( )
protectedvirtualinherited

notify device removals completed stub

Reimplemented from dx::driver< device_id_t, preference_t >.

Here is the caller graph for this function:

◆ removed() [2/2]

virtual void dx::map::driver< device_t >::removed ( device_t & )
inlineprotectedvirtualnoexceptinherited

notify specific device removal stub

Here is the caller graph for this function:

◆ scan()

template<class device_t, size_t devices = 100>
virtual void dx::asio::client::driver< device_t, devices >::scan ( )
inlineprotectedvirtual
Here is the call graph for this function:
Here is the caller graph for this function:

◆ shutdown()

template<typename device_id_t, typename preference_t>
virtual bool dx::driver< device_id_t, preference_t >::shutdown ( )
inlinevirtualinherited

client driver::shutdown/boot(): override to shutdown/boot host driver

Reimplemented in dx::coreaudio::driver< device_t >.

Here is the caller graph for this function:

◆ sleep()

void dx::map::driver< device_t >::sleep ( )
inlineoverrideprotectedinherited

< notify system will sleep

notify system wake completed stub

Here is the call graph for this function:

◆ thunk_idx()

template<class device_t, size_t devices = 100>
uint32_t dx::asio::client::driver< device_t, devices >::thunk_idx ( callbacks * callbacks)
inlinestaticprotected
Here is the call graph for this function:
Here is the caller graph for this function:

◆ wake()

void dx::map::driver< device_t >::wake ( )
inlineoverrideprotectedinherited
Here is the call graph for this function:

Member Data Documentation

◆ asio

template<class device_t, size_t devices = 100>
dx::registry dx::asio::client::driver< device_t, devices >::asio {asio::property::root, HKEY_LOCAL_MACHINE, KEY_NOTIFY, {[this](){scan();}}}
protected

◆ connection_id

template<class device_t, size_t devices = 100>
promoted<uint32_t> dx::asio::client::driver< device_t, devices >::connection_id
protected

◆ elements

T std::map< K, T >::elements
inherited

STL member.

◆ host

template<typename device_id_t, typename preference_t>
dx::promoted<dx::log> dx::driver< device_id_t, preference_t >::host
inherited

host logging control

◆ keys

K std::map< K, T >::keys
inherited

STL member.

◆ launched

bool dx::object::launched {}
inherited

◆ log

template<typename device_id_t, typename preference_t>
log dx::driver< device_id_t, preference_t >::log {}
inherited

◆ match

template<class device_t, size_t devices = 100>
dx_catchall_rethrow () public typedef decltype(matching_ids) dx::asio::client::driver< device_t, devices >::match
protected

◆ matching_ids

template<class device_t, size_t devices = 100>
std::set<dx::guid> dx::asio::client::driver< device_t, devices >::matching_ids
protected

◆ preference

template<typename device_id_t, typename preference_t>
preference_t dx::driver< device_id_t, preference_t >::preference
inherited

◆ product_id

template<typename device_id_t, typename preference_t>
const char* dx::driver< device_id_t, preference_t >::product_id
inherited

◆ thunks

template<class device_t, size_t devices = 100>
auto dx::asio::client::driver< device_t, devices >::thunks
inlinestaticprotected
Initial value:
= []<size_t... index_sequence>(std::index_sequence<index_sequence...>){
return std::array<std::pair<::ASIOCallbacks, callbacks*>, sizeof...(index_sequence)>{{
{::ASIOCallbacks{
.bufferSwitch= &thunk<index_sequence>::bufferSwitch,
.sampleRateDidChange= &thunk<index_sequence>::sampleRateDidChange,
.asioMessage= &thunk<index_sequence>::asioMessage,
.bufferSwitchTimeInfo= &thunk<index_sequence>::bufferSwitchTimeInfo}, nullptr} ...}};
}(std::make_index_sequence<devices>{})

◆ version

template<typename device_id_t, typename preference_t>
uint32_t dx::driver< device_id_t, preference_t >::version = DX_VERSION32
inherited

The documentation for this class was generated from the following file:

(c) copyright 2009 dynamic acoustics e.U. generated on

a closed source license may be obtained by requesting a written permission from dynamic acoustics e.U.
however - governmental use generally and military use especially is strictly prohibited though.