dxd - dynax driver framework 2.7.0d222
cross platform open source driver development framework
Loading...
Searching...
No Matches
dx::asio::service::device< super_device_t > Class Template Reference

#include <dx_asio_service_device.h>

Inheritance diagram for dx::asio::service::device< super_device_t >:
Collaboration diagram for dx::asio::service::device< super_device_t >:

Public Types

typedef shared::event event_t

Public Member Functions

void conclude () noexcept override
 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. Called only through try_conclude() - never call this directly from outside the class hierarchy.
auto count () const noexcept
 device (decltype(super::driver)&driver, decltype(super::id)&id)
 dx_catchall_rethrow () device(decltype(super
 dx_catchall_rethrow () void launch() override
void exception (const dx::exception &exception, bool filtered=false) const noexcept override
 notification exception handler
template<typename value_t, typename = cf::enable_if_convertible<value_t>>
value_t get (::CFStringRef key) const
::CFTypeRef get (::CFStringRef key) const
template<typename value_t, typename = cf::enable_if_convertible<value_t>>
value_t get (::CFStringRef key, ::CFTypeRef dflt) const noexcept
::CFTypeRef get (::CFStringRef key, ::CFTypeRef dflt) const noexcept
template<typename value_t, typename = cf::enable_if_convertible<value_t>>
value_t get (::CFStringRef key, value_t dflt) const noexcept
template<typename key_t, typename value_t, typename = cf::enable_if_convertible<key_t>, typename = cf::enable_if_convertible<value_t>>
value_t get (key_t key) const
template<typename key_t, typename = cf::enable_if_convertible<key_t>>
::CFTypeRef get (key_t key) const
void info (std::ostream &os) noexcept override try
 log object class information
void launch () override
 launch notification: object mounted and ready to use. Called only through try_launch() - never call this directly from outside the class hierarchy.
 operator const ::io_registry_entry_t & () const noexcept
 auto converter into const io_object
 operator const ::io_registry_entry_t & () const noexcept
 auto converter into const io_object
 operator uint64_t () const
 operator::CFMutableDictionaryRef () const
 operator::CFStringRef () const
 operator::io_registry_entry_t & () noexcept
 auto converter into io_object
 operator::io_registry_entry_t & () noexcept
 auto converter into io_object
 operator::io_registry_entry_t * () noexcept
 auto converter into io_object pointer
 operator::io_registry_entry_t * () noexcept
 auto converter into io_object pointer
bool operator== (::io_registry_entry_t io_object) const noexcept
virtual deviceoperator>> (std::ostream &) const
::CFTypeRef operator[] (::CFStringRef key) const
template<typename key_t, typename = cf::enable_if_convertible<key_t>>
::CFTypeRef operator[] (key_t key) const
registry parent () const
referenceretain ()
registryset (::CFStringRef key, ::CFTypeRef value)
template<typename value_t, typename = cf::enable_if_convertible<value_t>>
registryset (::CFStringRef key, value_t value)
registryset (::CFTypeRef properties)
 Setting properties in a registry entry is not generally supported, it is more common to support setting of properties of the connection based property setting of dx::device.
template<typename key_t, typename = cf::enable_if_convertible<key_t>>
registryset (key_t key, ::CFTypeRef value)
template<typename key_t, typename value_t, typename = cf::enable_if_convertible<key_t>, typename = cf::enable_if_convertible<value_t>>
registryset (key_t key, value_t value)
virtual void sleep ()
 notify system will sleep stub
bool try_conclude () noexcept
 atomically conclude()s if currently launched; returns whether this call did it
bool try_launch ()
 atomically launch()es if not already launched; returns whether this call did it
virtual void wake ()
 notify system wake completed stub

Static Public Member Functions

static std::string guid (decltype(super::driver)&driver, decltype(super::id)&id)

Public Attributes

cf::string bundle_id
dx::driver< decltype(id), preference_t > & driver
const id_t id
std::atomic< bool > launched {}
preference_t preference {driver.preference[puuid]}
std::string puid
 persistent UID - system unique - could change with location
std::string puuid
 persistent universal UID - universally unique ID (i.e. serial number)

Protected Types

typedef service::request< service::stream::data< typename super_device_t::desc_t > > request
typedef pipe< request >::template server< user_client, std::weak_ptr< device > > server
 pipe::server connecting user_clients The pipe holds a std::weak_ptr<device> as a temporary by the pipe::server::args variadic tuple to create shared device references for the user_client. At time of device construction there is not yet a std::shared_ptr<device>, therefore the pipe::server::args weak_ptr assignment happens at service::device::launch().

Protected Attributes

dx::preference asio
class dx::service::device::promoted clocksource
dx::preference clsid
std::string dll
class dx::service::device::promoted iosize
struct { 
   cf::string   bundle_id 
   cf::string   class_name 
kernel
class dx::service::device::promoted pipe
server pipe
class dx::service::device::promoted safety_offset [dx::stream::direction::out]
class dx::service::device::promoted safety_offset_in [dx::stream::direction::in]
class dx::service::device::promoted safety_offset_out [dx::stream::direction::out]
class dx::service::device::promoted samplerate

Member Typedef Documentation

◆ event_t

typedef shared::event dx::service::device< super_device_t >::event_t
inherited

◆ request

typedef service::request<service::stream::data<typename super_device_t::desc_t> > dx::service::device< super_device_t >::request
protectedinherited

◆ server

typedef pipe<request>::template server<user_client, std::weak_ptr<device> > dx::service::device< super_device_t >::server
protectedinherited

pipe::server connecting user_clients The pipe holds a std::weak_ptr<device> as a temporary by the pipe::server::args variadic tuple to create shared device references for the user_client. At time of device construction there is not yet a std::shared_ptr<device>, therefore the pipe::server::args weak_ptr assignment happens at service::device::launch().

Constructor & Destructor Documentation

◆ device()

template<typename super_device_t>
dx::asio::service::device< super_device_t >::device ( decltype(super::driver)& driver,
decltype(super::id)& id )
inline

Member Function Documentation

◆ conclude()

template<typename super_device_t>
void dx::asio::service::device< super_device_t >::conclude ( )
inlineoverridevirtualnoexcept

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. Called only through try_conclude() - never call this directly from outside the class hierarchy.

Reimplemented from dx::object.

Here is the call graph for this function:

◆ count()

auto io::reference< ::io_registry_entry_t >::count ( ) const
inlinenoexceptinherited

◆ dx_catchall_rethrow() [1/2]

template<typename super_device_t>
dx::asio::service::device< super_device_t >::dx_catchall_rethrow ( )
inline
Here is the call graph for this function:

◆ dx_catchall_rethrow() [2/2]

template<typename super_device_t>
dx::asio::service::device< super_device_t >::dx_catchall_rethrow ( )
inlineoverride
Here is the call graph for this function:

◆ exception()

template<typename id_t, typename preference_t = dx::preference>
void dx::device< id_t, preference_t >::exception ( const dx::exception & exception,
bool filtered = false ) const
inlineoverridevirtualnoexceptinherited

◆ get() [1/7]

template<typename value_t, typename = cf::enable_if_convertible<value_t>>
value_t io::registry::get ( ::CFStringRef key) const
inlineinherited
Here is the call graph for this function:

◆ get() [2/7]

::CFTypeRef io::registry::get ( ::CFStringRef key) const
inlineinherited
Here is the call graph for this function:
Here is the caller graph for this function:

◆ get() [3/7]

template<typename value_t, typename = cf::enable_if_convertible<value_t>>
value_t io::registry::get ( ::CFStringRef key,
::CFTypeRef dflt ) const
inlinenoexceptinherited
Here is the call graph for this function:

◆ get() [4/7]

::CFTypeRef io::registry::get ( ::CFStringRef key,
::CFTypeRef dflt ) const
inlinenoexceptinherited
Here is the call graph for this function:

◆ get() [5/7]

template<typename value_t, typename = cf::enable_if_convertible<value_t>>
value_t io::registry::get ( ::CFStringRef key,
value_t dflt ) const
inlinenoexceptinherited
Here is the call graph for this function:

◆ get() [6/7]

template<typename key_t, typename value_t, typename = cf::enable_if_convertible<key_t>, typename = cf::enable_if_convertible<value_t>>
value_t io::registry::get ( key_t key) const
inlineinherited
Here is the call graph for this function:

◆ get() [7/7]

template<typename key_t, typename = cf::enable_if_convertible<key_t>>
::CFTypeRef io::registry::get ( key_t key) const
inlineinherited
Here is the call graph for this function:
Here is the caller graph for this function:

◆ guid()

template<typename super_device_t>
std::string dx::asio::service::device< super_device_t >::guid ( decltype(super::driver)& driver,
decltype(super::id)& id )
inlinestatic
Here is the call graph for this function:
Here is the caller graph for this function:

◆ info()

template<typename super_device_t>
void dx::asio::service::device< super_device_t >::info ( std::ostream & os)
inlineoverridevirtualnoexcept

log object class information

Reimplemented from dx::object.

Here is the call graph for this function:

◆ launch()

void dx::service::device< super_device_t >::launch ( )
inlineoverridevirtualinherited

launch notification: object mounted and ready to use. Called only through try_launch() - never call this directly from outside the class hierarchy.

Reimplemented from dx::object.

◆ operator const ::io_registry_entry_t &() [1/2]

io::reference< ::io_registry_entry_t >::operator const ::io_registry_entry_t & ( ) const
inlinenoexceptinherited

auto converter into const io_object

◆ operator const ::io_registry_entry_t &() [2/2]

io::reference< ::io_registry_entry_t >::operator const ::io_registry_entry_t & ( ) const
inlinenoexceptinherited

auto converter into const io_object

◆ operator uint64_t()

io::registry::operator uint64_t ( ) const
inlineexplicitinherited

◆ operator::CFMutableDictionaryRef()

io::registry::operator::CFMutableDictionaryRef ( ) const
inlineexplicitinherited
Here is the call graph for this function:
Here is the caller graph for this function:

◆ operator::CFStringRef()

io::registry::operator::CFStringRef ( ) const
inlineexplicitinherited
Here is the caller graph for this function:

◆ operator::io_registry_entry_t &() [1/2]

io::reference< ::io_registry_entry_t >::operator ::io_registry_entry_t & ( )
inlinenoexceptinherited

auto converter into io_object

◆ operator::io_registry_entry_t &() [2/2]

io::reference< ::io_registry_entry_t >::operator ::io_registry_entry_t & ( )
inlinenoexceptinherited

auto converter into io_object

◆ operator::io_registry_entry_t *() [1/2]

io::reference< ::io_registry_entry_t >::operator ::io_registry_entry_t * ( )
inlinenoexceptinherited

auto converter into io_object pointer

◆ operator::io_registry_entry_t *() [2/2]

io::reference< ::io_registry_entry_t >::operator ::io_registry_entry_t * ( )
inlinenoexceptinherited

auto converter into io_object pointer

◆ operator==()

bool io::reference< ::io_registry_entry_t >::operator== ( ::io_registry_entry_t io_object) const
inlinenoexceptinherited

◆ operator>>()

template<typename id_t, typename preference_t = dx::preference>
virtual device & dx::device< id_t, preference_t >::operator>> ( std::ostream & ) const
inlinevirtualinherited

◆ operator[]() [1/2]

::CFTypeRef io::registry::operator[] ( ::CFStringRef key) const
inlineinherited
Here is the call graph for this function:

◆ operator[]() [2/2]

template<typename key_t, typename = cf::enable_if_convertible<key_t>>
::CFTypeRef io::registry::operator[] ( key_t key) const
inlineinherited
Here is the call graph for this function:

◆ parent()

registry io::registry::parent ( ) const
inlineinherited
Here is the call graph for this function:
Here is the caller graph for this function:

◆ retain()

reference & io::reference< ::io_registry_entry_t >::retain ( )
inlineinherited
Here is the caller graph for this function:

◆ set() [1/5]

registry & io::registry::set ( ::CFStringRef key,
::CFTypeRef value )
inlineinherited
Here is the call graph for this function:

◆ set() [2/5]

template<typename value_t, typename = cf::enable_if_convertible<value_t>>
registry & io::registry::set ( ::CFStringRef key,
value_t value )
inlineinherited
Here is the call graph for this function:

◆ set() [3/5]

registry & io::registry::set ( ::CFTypeRef properties)
inlineinherited

Setting properties in a registry entry is not generally supported, it is more common to support setting of properties of the connection based property setting of dx::device.

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

◆ set() [4/5]

template<typename key_t, typename = cf::enable_if_convertible<key_t>>
registry & io::registry::set ( key_t key,
::CFTypeRef value )
inlineinherited
Here is the call graph for this function:

◆ set() [5/5]

template<typename key_t, typename value_t, typename = cf::enable_if_convertible<key_t>, typename = cf::enable_if_convertible<value_t>>
registry & io::registry::set ( key_t key,
value_t value )
inlineinherited
Here is the call graph for this function:

◆ sleep()

template<typename id_t, typename preference_t = dx::preference>
virtual void dx::device< id_t, preference_t >::sleep ( )
inlinevirtualinherited

notify system will sleep stub

Here is the caller graph for this function:

◆ try_conclude()

bool dx::object::try_conclude ( )
inlinenoexceptinherited

atomically conclude()s if currently launched; returns whether this call did it

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

◆ try_launch()

bool dx::object::try_launch ( )
inlineinherited

atomically launch()es if not already launched; returns whether this call did it

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

◆ wake()

template<typename id_t, typename preference_t = dx::preference>
virtual void dx::device< id_t, preference_t >::wake ( )
inlinevirtualinherited

Member Data Documentation

◆ asio

template<typename super_device_t>
dx::preference dx::asio::service::device< super_device_t >::asio
protected

◆ bundle_id

cf::string dx::service::device< super_device_t >::bundle_id
inherited

◆ clocksource

class dx::service::device::promoted dx::service::device< super_device_t >::clocksource
protectedinherited

◆ clsid

template<typename super_device_t>
dx::preference dx::asio::service::device< super_device_t >::clsid
protected

◆ dll

template<typename super_device_t>
std::string dx::asio::service::device< super_device_t >::dll
protected
Initial value:
{[this](){
char tmp[MAX_PATH];
dx_pass(::GetModuleFileNameA(nullptr, tmp, sizeof(tmp))? ok: ::GetLastError());
std::string dll{tmp};
return dll.replace(dll.rfind("Service.exe"), sizeof("Service.exe"), "ASIO.dll");
}()}
std::string dll
Definition dx_asio_service_device.h:45
#define dx_pass(test,...)
Definition dx_exception.h:55
@ ok
Definition macOS/dx_platform.h:177

◆ driver

template<typename id_t, typename preference_t = dx::preference>
dx::driver<decltype(id), preference_t>& dx::device< id_t, preference_t >::driver
inherited

◆ id

template<typename id_t, typename preference_t = dx::preference>
const id_t dx::device< id_t, preference_t >::id
inherited

◆ iosize

class dx::service::device::promoted dx::service::device< super_device_t >::iosize
protectedinherited

◆ [struct]

struct { ... } dx::service::device< super_device_t >::kernel

◆ launched

std::atomic<bool> dx::object::launched {}
inherited

◆ pipe [1/2]

class dx::service::device::promoted dx::service::device< super_device_t >::pipe
protectedinherited

◆ pipe [2/2]

server dx::service::device< super_device_t >::pipe
protectedinherited

◆ preference

template<typename id_t, typename preference_t = dx::preference>
preference_t dx::device< id_t, preference_t >::preference {driver.preference[puuid]}
inherited

◆ puid

template<typename id_t, typename preference_t = dx::preference>
std::string dx::device< id_t, preference_t >::puid
inherited

persistent UID - system unique - could change with location

◆ puuid

template<typename id_t, typename preference_t = dx::preference>
std::string dx::device< id_t, preference_t >::puuid
inherited

persistent universal UID - universally unique ID (i.e. serial number)

◆ safety_offset

class dx::service::device::promoted dx::service::device< super_device_t >::safety_offset[dx::stream::direction::out]
protectedinherited

◆ safety_offset_in

class dx::service::device::promoted dx::service::device< super_device_t >::safety_offset_in[dx::stream::direction::in]
protectedinherited

◆ safety_offset_out

class dx::service::device::promoted dx::service::device< super_device_t >::safety_offset_out[dx::stream::direction::out]
protectedinherited

◆ samplerate

class dx::service::device::promoted dx::service::device< super_device_t >::samplerate
protectedinherited

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.