dxd - dynax driver framework 3.0.0d222
cross platform open source driver development framework
Loading...
Searching...
No Matches
dx::service::app Class Reference

service::app - Windows Service Windows services are essentially just a type of container for which startup conditions can be defined. The service interface does not support any additional communication. Communication between client and service are usually be implemented using Windows named pipes. More...

#include <dx_service.h>

Inheritance diagram for dx::service::app:
Collaboration diagram for dx::service::app:

Public Member Functions

 app (const std::string &id)
void exception (const dx::exception &exception, bool filtered=false) const noexcept override
 notification exception handler
virtual void info (std::ostream &os) noexcept
 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.
virtual void run (const parser::args &)
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

Static Public Member Functions

static void abort (int) noexcept

Public Attributes

std::atomic< bool > launched {}

Protected Member Functions

virtual void conclude () noexcept
 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.
virtual void ctrl (::DWORD ctrl)
virtual void main (const parser::args &args)

Static Protected Member Functions

static void __stdcall __ctrl (::DWORD ctrl) noexcept
static void __stdcall __main (::DWORD argc, char **argv) noexcept

Protected Attributes

::SERVICE_STATUS_HANDLE handle {}
std::string id
power::throttling throttling
 a windowless process' timer resolution requests are ignored by default

Static Protected Attributes

static appself

Detailed Description

service::app - Windows Service Windows services are essentially just a type of container for which startup conditions can be defined. The service interface does not support any additional communication. Communication between client and service are usually be implemented using Windows named pipes.

Now the service itself implements a dx::service::app. The dx::service::manager controls the installation, starting, stopping, etc. of the service. This can be part of service executable and i.e. controlled via cmd line parameters or seperate application. dx::service::parser therefor provide standard cmd line parameters to control the service.

Constructor & Destructor Documentation

◆ app()

dx::service::app::app ( const std::string & id)
inline
Here is the call graph for this function:
Here is the caller graph for this function:

Member Function Documentation

◆ __ctrl()

void __stdcall dx::service::app::__ctrl ( ::DWORD ctrl)
inlinestaticprotectednoexcept
Here is the call graph for this function:
Here is the caller graph for this function:

◆ __main()

void __stdcall dx::service::app::__main ( ::DWORD argc,
char ** argv )
inlinestaticprotectednoexcept
Here is the caller graph for this function:

◆ abort()

void dx::service::app::abort ( int )
inlinestaticnoexcept
Here is the caller graph for this function:

◆ conclude()

virtual void dx::object::conclude ( )
inlineprotectedvirtualnoexceptinherited

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 in dx::asio::client::_device< desc_t, preference_t, stream_t, group_t >, dx::asio::client::_device< desc, preference, stream< device< desc, preference, stream, group > >, group< device< desc, preference, stream, group > > >, dx::asio::client::_device< desc_t, preference_t, stream_t< device< desc_t, preference_t, stream_t, group_t > >, group_t< device< desc_t, preference_t, stream_t, group_t > > >, dx::asio::service::device< super_device_t >, dx::coremidi::driver< device_t >, dx::map::driver< _device_t, holder_t >, dx::map::driver< device<> >, dx::map::driver< device_t >, dx::map::driver< device_t, dx::apartment< device_t > >, dx::midi::services::driver< device_t >, dx::proxy::device< preference_t >, dx::proxy::device< preference_t >, dx::proxy::device< dx::preference >, dx::proxy::device<>, dx::proxy::stream::_device< desc_t, preference_t, stream_t, group_t >, dx::proxy::stream::_device< desc_t, preference_t, stream_t< device< desc_t, preference_t, stream_t, group_t > >, group_t< device< desc_t, preference_t, stream_t, group_t > > >, dx::proxy::stream::_device< dx::stream::desc<>, dx::preference, stream< device< dx::stream::desc<>, dx::preference, stream, group > >, group< device< dx::stream::desc<>, dx::preference, stream, group > > >, dx::service::client::_device< desc_t, preference_t, stream_t, group_t >, dx::service::client::_device< desc, preference, stream< device< desc, preference, stream, group > >, group< device< desc, preference, stream, group > > >, dx::service::client::_device< desc_t, preference_t, stream_t< device< desc_t, preference_t, stream_t, group_t > >, group_t< device< desc_t, preference_t, stream_t, group_t > > >, dx::service::client::driver< device_t >, dx::service::device< preference_t >, dx::service::device< dx::preference >, dx::service::device< super_device_t >, dx::stream::control< dx::device< std::string, preference > >, dx::stream::control< dx::stream::object< device<> > >, dx::stream::control< dx::stream::object< device_t > >, dx::stream::control< object< device_t > >, dx::stream::control< stream::object< device<> > >, dx::stream::control< stream::object< device_t > >, dx::stream::device< dx::device< dx::guid, preference >, desc, stream< device< desc, preference, stream, group > >, group< device< desc, preference, stream, group > > >, dx::stream::device< dx::device< dx::guid, preference_t >, desc_t, stream_t, group_t >, dx::stream::device< dx::device< std::string, dx::preference >, desc, dx::stream::shared::stream< device< desc, dx::preference, dx::stream::shared::stream, group > >, group< device< desc, dx::preference, dx::stream::shared::stream, group > > >, dx::stream::device< dx::device< std::string, preference >, desc, stream< device< desc, preference, stream, group > >, group< device< desc, preference, stream, group > > >, dx::stream::device< dx::device< std::string, preference_t >, desc_t, stream_t, group_t >, dx::stream::device< dx::device<::AudioObjectID, cf::preference >, dx::virtuel::stream::desc, dx::stream::stream< device< dx::virtuel::stream::desc, cf::preference, dx::stream::stream, group, false > >, group< device< dx::virtuel::stream::desc, cf::preference, dx::stream::stream, group, false > > >, dx::stream::device< dx::device<::AudioObjectID, cf::preference >, dx::virtuel::stream::desc, stream< device< dx::virtuel::stream::desc, cf::preference, stream, coreaudio::group, false > >, coreaudio::group< device< dx::virtuel::stream::desc, cf::preference, stream, coreaudio::group, false > > >, dx::stream::device< dx::device<::AudioObjectID, cf::preference >, dx::virtuel::stream::desc, stream< device< dx::virtuel::stream::desc, cf::preference, stream, group, _hosted > >, group< device< dx::virtuel::stream::desc, cf::preference, stream, group, _hosted > > >, dx::stream::device< dx::device<::AudioObjectID, preference_t >, desc_t, stream_t, group_t >, dx::stream::device< dx::device<::MIDIDeviceRef, cf::preference >, desc, stream< device< desc, cf::preference, stream > > >, dx::stream::device< dx::device<::MIDIDeviceRef, preference_t >, desc_t, stream_t >, dx::stream::device< dx::proxy::device< dx::preference >, dx::stream::desc<>, stream< device< dx::stream::desc<>, dx::preference, stream, group > >, group< device< dx::stream::desc<>, dx::preference, stream, group > > >, dx::stream::device< dx::proxy::device< preference_t >, desc_t, stream_t, group_t >, 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::stream::device< usb::device< dx::preference >, desc_t, pipe< device< desc_t, dx::preference, pipe, group > >, group< device< desc_t, dx::preference, pipe, group > > >, dx::stream::device< usb::device< preference_t >, desc_t, stream_t, group_t >, dx::usb::device< preference_t >, dx::usb::device< dx::preference >, dx::usb::pipe< device_t >, dx::usb::pipe< device_t >, dx::usb::platform::device< preference_t >, dx::usb::platform::device< dx::preference >, dx::usb::platform::device< preference_t >, dx::virtuel::stream::_device< desc_t, preference_t, stream_t, group_t >, dx::virtuel::stream::_device< desc, dx::preference, dx::stream::shared::stream< device< desc, dx::preference, dx::stream::shared::stream, group > >, group< device< desc, dx::preference, dx::stream::shared::stream, group > > >, dx::virtuel::stream::_device< desc_t, preference_t, stream_t< device< desc_t, preference_t, stream_t, group_t > >, group_t< device< desc_t, preference_t, stream_t, group_t > > >, and dx::wasapi::client::driver< device_t >.

Here is the caller graph for this function:

◆ ctrl()

virtual void dx::service::app::ctrl ( ::DWORD ctrl)
inlineprotectedvirtual
Here is the call graph for this function:
Here is the caller graph for this function:

◆ exception()

void dx::service::app::exception ( const dx::exception & exception,
bool filtered = false ) const
inlineoverridevirtualnoexcept

notification exception handler

Implements dx::object.

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

◆ info()

virtual void dx::object::info ( std::ostream & os)
inlinevirtualnoexceptinherited

log object class information

Reimplemented in dx::asio::client::_device< desc_t, preference_t, stream_t, group_t >, dx::asio::client::_device< desc, preference, stream< device< desc, preference, stream, group > >, group< device< desc, preference, stream, group > > >, dx::asio::client::_device< desc_t, preference_t, stream_t< device< desc_t, preference_t, stream_t, group_t > >, group_t< device< desc_t, preference_t, stream_t, group_t > > >, dx::asio::client::driver< device_t, devices >, dx::asio::service::device< super_device_t >, dx::coreaudio::_device< desc_t, preference_t, stream_t, group_t >, dx::coreaudio::_device< desc_t, preference_t, stream_t< device< desc_t, preference_t, stream_t, group_t, _hosted > >, group_t< device< desc_t, preference_t, stream_t, group_t, _hosted > > >, dx::coreaudio::_device< dx::virtuel::stream::desc, cf::preference, dx::stream::stream< device< dx::virtuel::stream::desc, cf::preference, dx::stream::stream, group, false > >, group< device< dx::virtuel::stream::desc, cf::preference, dx::stream::stream, group, false > > >, dx::coreaudio::_device< dx::virtuel::stream::desc, cf::preference, stream< device< dx::virtuel::stream::desc, cf::preference, stream, coreaudio::group, false > >, coreaudio::group< device< dx::virtuel::stream::desc, cf::preference, stream, coreaudio::group, false > > >, dx::coreaudio::_device< dx::virtuel::stream::desc, cf::preference, stream< device< dx::virtuel::stream::desc, cf::preference, stream, group, _hosted > >, group< device< dx::virtuel::stream::desc, cf::preference, stream, group, _hosted > > >, dx::coreaudio::driver< device_t >, dx::coreaudio::pod::device< desc_t, preference_t, stream_t, group_t >, dx::coreaudio::stream::device< desc_t, preference_t, stream_t, group_t >, dx::coremidi::_device< desc_t, preference_t, stream_t >, dx::coremidi::_device< desc, cf::preference, stream< device< desc, cf::preference, stream > > >, dx::coremidi::_device< desc_t, preference_t, stream_t< device< desc_t, preference_t, stream_t > > >, dx::coremidi::driver< device_t >, dx::device< id_t, preference_t >, dx::device< dx::guid, preference >, dx::device< std::string, dx::preference >, dx::device< std::string, preference >, dx::device< std::string, preference_t >, dx::device<::AudioObjectID, cf::preference >, dx::device<::io_service_t, dx::preference >, dx::device<::io_service_t, preference_t >, dx::device<::MIDIDeviceRef, cf::preference >, dx::device<>, dx::driver< device_id_t, preference_t >, dx::driver< decltype(_device_t::id), decltype(_device_t::preference)>, dx::driver< decltype(device<>::id), decltype(device<>::preference)>, dx::driver< decltype(id), cf::preference >, dx::driver< decltype(id), dx::preference >, dx::driver< decltype(id), preference >, dx::driver< device_id_t, decltype(device_t::preference)>, dx::map::driver< _device_t, holder_t >, dx::map::driver< device<> >, dx::map::driver< device_t >, dx::map::driver< device_t, dx::apartment< device_t > >, dx::midi::services::_device< desc, preference, stream< device< desc, preference, stream > > >, dx::midi::services::driver< device_t >, dx::proxy::device< preference_t >, dx::proxy::device< preference_t >, dx::proxy::device< dx::preference >, dx::proxy::device<>, dx::proxy::driver< device_t >, dx::proxy::driver< device_t >, dx::proxy::stream::_device< desc_t, preference_t, stream_t, group_t >, dx::proxy::stream::_device< desc_t, preference_t, stream_t< device< desc_t, preference_t, stream_t, group_t > >, group_t< device< desc_t, preference_t, stream_t, group_t > > >, dx::proxy::stream::_device< dx::stream::desc<>, dx::preference, stream< device< dx::stream::desc<>, dx::preference, stream, group > >, group< device< dx::stream::desc<>, dx::preference, stream, group > > >, dx::service::client::_device< desc_t, preference_t, stream_t, group_t >, dx::service::client::_device< desc, preference, stream< device< desc, preference, stream, group > >, group< device< desc, preference, stream, group > > >, dx::service::client::_device< desc_t, preference_t, stream_t< device< desc_t, preference_t, stream_t, group_t > >, group_t< device< desc_t, preference_t, stream_t, group_t > > >, dx::service::client::driver< device_t >, dx::service::device< preference_t >, dx::service::device< preference_t >, dx::service::device< dx::preference >, dx::service::device< super_device_t >, dx::service::device< super_device_t >, dx::stream::control< dx::device< std::string, preference > >, dx::stream::control< dx::stream::object< device<> > >, dx::stream::control< dx::stream::object< device_t > >, dx::stream::control< object< device_t > >, dx::stream::control< stream::object< device<> > >, dx::stream::control< stream::object< device_t > >, dx::stream::device< dx::device< dx::guid, preference >, desc, stream< device< desc, preference, stream, group > >, group< device< desc, preference, stream, group > > >, dx::stream::device< dx::device< dx::guid, preference_t >, desc_t, stream_t, group_t >, dx::stream::device< dx::device< std::string, dx::preference >, desc, dx::stream::shared::stream< device< desc, dx::preference, dx::stream::shared::stream, group > >, group< device< desc, dx::preference, dx::stream::shared::stream, group > > >, dx::stream::device< dx::device< std::string, preference >, desc, stream< device< desc, preference, stream, group > >, group< device< desc, preference, stream, group > > >, dx::stream::device< dx::device< std::string, preference_t >, desc_t, stream_t, group_t >, dx::stream::device< dx::device<::AudioObjectID, cf::preference >, dx::virtuel::stream::desc, dx::stream::stream< device< dx::virtuel::stream::desc, cf::preference, dx::stream::stream, group, false > >, group< device< dx::virtuel::stream::desc, cf::preference, dx::stream::stream, group, false > > >, dx::stream::device< dx::device<::AudioObjectID, cf::preference >, dx::virtuel::stream::desc, stream< device< dx::virtuel::stream::desc, cf::preference, stream, coreaudio::group, false > >, coreaudio::group< device< dx::virtuel::stream::desc, cf::preference, stream, coreaudio::group, false > > >, dx::stream::device< dx::device<::AudioObjectID, cf::preference >, dx::virtuel::stream::desc, stream< device< dx::virtuel::stream::desc, cf::preference, stream, group, _hosted > >, group< device< dx::virtuel::stream::desc, cf::preference, stream, group, _hosted > > >, dx::stream::device< dx::device<::AudioObjectID, preference_t >, desc_t, stream_t, group_t >, dx::stream::device< dx::device<::MIDIDeviceRef, cf::preference >, desc, stream< device< desc, cf::preference, stream > > >, dx::stream::device< dx::device<::MIDIDeviceRef, preference_t >, desc_t, stream_t >, dx::stream::device< dx::proxy::device< dx::preference >, dx::stream::desc<>, stream< device< dx::stream::desc<>, dx::preference, stream, group > >, group< device< dx::stream::desc<>, dx::preference, stream, group > > >, dx::stream::device< dx::proxy::device< preference_t >, desc_t, stream_t, group_t >, 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::stream::device< usb::device< dx::preference >, desc_t, pipe< device< desc_t, dx::preference, pipe, group > >, group< device< desc_t, dx::preference, pipe, group > > >, dx::stream::device< usb::device< preference_t >, desc_t, stream_t, group_t >, dx::stream::driver< dx::map::driver< device<> > >, dx::stream::driver< dx::map::driver< device_t > >, dx::stream::driver< map::driver< device_t > >, dx::stream::object< _device_t >, dx::stream::object< device<> >, dx::stream::pin< device_t, _circular_t >, dx::stream::stream< device_t, dx::circular, usb::pipe< device_t > >, dx::usb::device< preference_t >, dx::usb::device< dx::preference >, dx::usb::pipe< device_t >, dx::usb::pipe< device_t >, dx::usb::platform::device< preference_t >, dx::usb::platform::device< dx::preference >, dx::usb::platform::device< preference_t >, dx::usb::stream::_device< desc_t, preference_t, stream_t, group_t >, dx::usb::stream::_device< desc_t, dx::preference, pipe< device< desc_t, dx::preference, pipe, group > >, group< device< desc_t, dx::preference, pipe, group > > >, dx::usb::stream::_device< desc_t, preference_t, stream_t< device< desc_t, preference_t, stream_t, group_t > >, group_t< device< desc_t, preference_t, stream_t, group_t > > >, dx::usb::stream::pipe< device_t, circular_t, stream_t >, dx::virtuel::driver< device_t >, dx::virtuel::driver< device<> >, dx::virtuel::stream::_device< desc_t, preference_t, stream_t, group_t >, dx::virtuel::stream::_device< desc, dx::preference, dx::stream::shared::stream< device< desc, dx::preference, dx::stream::shared::stream, group > >, group< device< desc, dx::preference, dx::stream::shared::stream, group > > >, dx::virtuel::stream::_device< desc_t, preference_t, stream_t< device< desc_t, preference_t, stream_t, group_t > >, group_t< device< desc_t, preference_t, stream_t, group_t > > >, dx::wasapi::client::_device< desc, preference, stream< device< desc, preference, stream, group > >, group< device< desc, preference, stream, group > > >, and dx::wasapi::client::driver< device_t >.

Here is the caller graph for this function:

◆ launch()

void dx::service::app::launch ( )
inlineoverridevirtual

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.

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

◆ main()

virtual void dx::service::app::main ( const parser::args & args)
inlineprotectedvirtual
Here is the call graph for this function:
Here is the caller graph for this function:

◆ run()

virtual void dx::service::app::run ( const parser::args & )
inlinevirtual

Reimplemented in dx::service::driver< driver_t >::app.

Here is the call graph for this function:
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:

Member Data Documentation

◆ handle

::SERVICE_STATUS_HANDLE dx::service::app::handle {}
protected

◆ id

std::string dx::service::app::id
protected

◆ launched

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

◆ self

app* dx::service::app::self
staticprotected

◆ throttling

power::throttling dx::service::app::throttling
protected

a windowless process' timer resolution requests are ignored by default


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.