dxd - dynax driver framework  2675
cross platform open source driver development framework
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
dx::midi::stream< io_t, bus_t, stream_desc_t, exception_t, device_t > Class Template Reference

stream More...

#include <dx_midi.h>

+ Inheritance diagram for dx::midi::stream< io_t, bus_t, stream_desc_t, exception_t, device_t >:
+ Collaboration diagram for dx::midi::stream< io_t, bus_t, stream_desc_t, exception_t, device_t >:

Public Member Functions

void launch () override throw (exception_t)
 kernel notification event More...
 
void signal () throw (exception_t)
 signal data available More...
 
 stream (device_t &device, const stream_desc_t &stream_desc) throw (exception_t)
 MIDI stream constructor. More...
 
 ~stream () noexcept
 MIDI stream destructor. More...
 

Public Attributes

iobridge< io_t > io
 

Protected Member Functions

 operator const os_event () const noexcept
 
 operator os_event () noexcept
 
 operator os_event () noexcept
 
void reset ()
 for Windows compatibility only Notifying event<dx::user> doesn't change its state so there is nothing to reset. When it is notified only a thread already waiting can be awoken. If that thread then waits again it will not continue until the condition variable is re-notified. More...
 
void reset () throw (exception_t)
 
void wait (int64_t timeout=0) throw (exception_t)
 

Static Protected Member Functions

static void pass (::HRESULT test) throw (exception_t)
 
static void pass (unsigned long test) throw (exception_t)
 
static void pass (::BOOL test) throw (exception_t)
 specialization for standard windows API BOOL return type More...
 
static void pass (::HANDLE test) throw (exception_t)
 specialization for test validy of windows HANDLE type More...
 
static void pass (::HWND test) throw (exception_t)
 specialization for test validy of windows HWND type - which is of course different from HANDLE More...
 
static void pass (::ATOM test) throw (exception_t)
 specialization for standard windows API ATOM return type More...
 
template<>
static void pass (unsigned long test) throw(::HRESULT)
 
template<>
static void pass (::BOOL test) throw(::HRESULT)
 
template<>
static void pass (::HANDLE test) throw(::HRESULT)
 
template<>
static void pass (::HWND test) throw(::HRESULT)
 
template<>
static void pass (::ATOM test) throw(::HRESULT)
 
template<class return_t >
static void pass (return_t value) throw (exception_t)
 
template<class return_t >
static void pass (bool test, return_t value) throw (exception_t)
 
static void pass_strict (::LONG test) throw (exception_t)
 

Detailed Description

template<typename io_t, typename bus_t, typename stream_desc_t, typename exception_t, typename device_t = device<exception_t>>
class dx::midi::stream< io_t, bus_t, stream_desc_t, exception_t, device_t >

stream

the dx::midi::stream unites the shared pin features. Most notably it implements a single kernel notification to be distributed to the dx::midi::pins in user mode, to avoid multiple kernel-user mode notifications for pins sharing a devce stream (avoiding all the kernel infrastructure to keep track of kernel-user notification references.)

Constructor & Destructor Documentation

template<typename io_t , typename bus_t , typename stream_desc_t , typename exception_t , typename device_t = device<exception_t>>
dx::midi::stream< io_t, bus_t, stream_desc_t, exception_t, device_t >::stream ( device_t &  device,
const stream_desc_t &  stream_desc 
)
throw (exception_t
)
inline

MIDI stream constructor.

template<typename io_t , typename bus_t , typename stream_desc_t , typename exception_t , typename device_t = device<exception_t>>
dx::midi::stream< io_t, bus_t, stream_desc_t, exception_t, device_t >::~stream ( )
inlinenoexcept

MIDI stream destructor.

Stops and closes kernel stream.

Member Function Documentation

template<typename io_t , typename bus_t , typename stream_desc_t , typename exception_t , typename device_t = device<exception_t>>
void dx::midi::stream< io_t, bus_t, stream_desc_t, exception_t, device_t >::launch ( )
throw (exception_t
)
inlineoverridevirtual

kernel notification event

Reimplemented from dx::event< dx::kernel, exception_t >.

+ Here is the call graph for this function:

template<typename exception_t >
dx::event< dx::kernel, exception_t >::operator const os_event ( ) const
inlinenoexceptinherited
template<typename exception_t >
dx::event< dx::kernel, exception_t >::operator os_event ( )
inlinenoexceptinherited
template<typename exception_t >
dx::event< dx::kernel, exception_t >::operator os_event ( )
inlinenoexceptinherited
template<class exception_t = os_result>
static void dx::exception< exception_t >::pass ( ::HRESULT  test)
throw (exception_t
)
inlinestaticinherited
template<class exception_t = os_result>
static void dx::exception< exception_t >::pass ( unsigned long  test)
throw (exception_t
)
inlinestaticinherited
template<class exception_t = os_result>
static void dx::exception< exception_t >::pass ( ::BOOL  test)
throw (exception_t
)
inlinestaticinherited

specialization for standard windows API BOOL return type

template<class exception_t = os_result>
static void dx::exception< exception_t >::pass ( ::HANDLE  test)
throw (exception_t
)
inlinestaticinherited

specialization for test validy of windows HANDLE type

template<class exception_t = os_result>
static void dx::exception< exception_t >::pass ( ::HWND  test)
throw (exception_t
)
inlinestaticinherited

specialization for test validy of windows HWND type - which is of course different from HANDLE

template<class exception_t = os_result>
static void dx::exception< exception_t >::pass ( ::ATOM  test)
throw (exception_t
)
inlinestaticinherited

specialization for standard windows API ATOM return type

template<>
static void dx::exception<::HRESULT >::pass ( unsigned long  test)
throw(::HRESULT
)
staticinherited
template<>
static void dx::exception<::HRESULT >::pass ( ::BOOL  test)
throw(::HRESULT
)
staticinherited
template<>
static void dx::exception<::HRESULT >::pass ( ::HANDLE  test)
throw(::HRESULT
)
staticinherited
template<>
static void dx::exception<::HRESULT >::pass ( ::HWND  test)
throw(::HRESULT
)
staticinherited
template<>
static void dx::exception<::HRESULT >::pass ( ::ATOM  test)
throw(::HRESULT
)
staticinherited
template<class exception_t = os_result>
template<class return_t >
static void dx::exception< exception_t >::pass ( return_t  value)
throw (exception_t
)
inlinestaticinherited

+ Here is the caller graph for this function:

template<class exception_t = os_result>
template<class return_t >
static void dx::exception< exception_t >::pass ( bool  test,
return_t  value 
)
throw (exception_t
)
inlinestaticinherited
template<class exception_t = os_result>
static void dx::exception< exception_t >::pass_strict ( ::LONG  test)
throw (exception_t
)
inlinestaticinherited

+ Here is the caller graph for this function:

template<typename exception_t >
void dx::event< dx::kernel, exception_t >::reset ( )
inlineinherited

for Windows compatibility only Notifying event<dx::user> doesn't change its state so there is nothing to reset. When it is notified only a thread already waiting can be awoken. If that thread then waits again it will not continue until the condition variable is re-notified.

template<typename exception_t >
void dx::event< dx::kernel, exception_t >::reset ( )
throw (exception_t
)
inlineinherited
template<typename io_t , typename bus_t , typename stream_desc_t , typename exception_t , typename device_t = device<exception_t>>
void dx::midi::stream< io_t, bus_t, stream_desc_t, exception_t, device_t >::signal ( )
throw (exception_t
)
inline

signal data available

Todo:
Windows: remove and implement shared event::signal
template<typename exception_t >
void dx::event< dx::kernel, exception_t >::wait ( int64_t  timeout = 0)
throw (exception_t
)
inlineinherited

Member Data Documentation

iobridge<io_t > dx::stream::opened< io_t >::io
inherited

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

(c) copyright 2009 dynamic acoustics e.U. generated on Tue Dec 4 2018

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.