dxd - dynax driver framework 3.0.0d222
cross platform open source driver development framework
Loading...
Searching...
No Matches
dx::service::client::group< device_t > Class Template Reference

a service client's own streaming group: its transport side is the service's, chain-forwarded More...

#include <dx_service_client_device.h>

Inheritance diagram for dx::service::client::group< device_t >:
Collaboration diagram for dx::service::client::group< device_t >:

Public Types

typedef settings< device_t >::client client
typedef dx::clock< dx::free_run< dx::shared::event > > clock
 the one clock of this group, its source freely selectable
typedef device_t device_t
typedef std::conditional_t< store, typename dx::promoted< uint32_t >::template preference< decltype(device_t::preference)>, dx::promoted< uint32_t > > promoted
typedef std::conditional_t< store, typename dx::promoted< uint32_t >::template preference< decltype(device_t::preference)>, dx::promoted< uint32_t > > promoted
typedef device_t::stream_t stream_t
typedef settings< device_t >::transport transport
 the group's two sides, reached as transport::/client:: members

Public Member Functions

 __dx_catchall (std::cerr<< dx::exception(&exception, exception.error, __PRETTY_FUNCTION__, __FILE__, __LINE__)<< std::endl;,) void conclude() noexcept
template<typename... args_t>
 group (args_t &&... args)
void info (std::ostream &os) noexcept override try

Static Public Member Functions

static std::string key (direction::direction direction, uint32_t)
static std::string key (direction::direction direction, uint32_t strategy)

Public Attributes

promoted safety_offset [direction::directions]
promoted safety_offset [direction::directions]
promoted< uint32_tstart {0}
promoted< bool > started {false}
std::map< decltype(stream_t::target.idx()), std::weak_ptr< stream_t > > streams
 shared stream ownership: central weak reference per stream, guarded by device
promoted sync_strategy
promoted sync_strategy
chain< uint32_t, typename device_t::request > sync_strategy_server {this->device.pipe, this->transport::sync_strategy, device_t::request::id::sync_strategy}
chain< uint32_t, typename device_t::request > transport_safety_offset_in_server {this->device.pipe, this->transport::safety_offset[dx::stream::direction::in], device_t::request::id::transport_safety_offset_in}
chain< uint32_t, typename device_t::request > transport_safety_offset_out_server {this->device.pipe, this->transport::safety_offset[dx::stream::direction::out], device_t::request::id::transport_safety_offset_out}

Protected Member Functions

void tick () override
 the plain container has no transport of its own: a bus whose group moves the data overrides this, a group fed from outside (service, kernel, SDK callback) has nothing to do here

Protected Attributes

device_tdevice
 also the mutex serializing membership against the tick
std::function< void()> flush_hook = []{}
std::function< void()> halt_hook = []{}
std::function< void()> run_hook = []{}

Detailed Description

template<typename device_t>
class dx::service::client::group< device_t >

a service client's own streaming group: its transport side is the service's, chain-forwarded

Member Typedef Documentation

◆ client

◆ clock

the one clock of this group, its source freely selectable

◆ device_t

◆ promoted [1/2]

template<typename device_t, bool store = true>
typedef std::conditional_t<store, typename dx::promoted<uint32_t>::template preference<decltype(device_t::preference)>, dx::promoted<uint32_t> > dx::stream::settings< device_t, store >::promoted
inherited

◆ promoted [2/2]

typedef std::conditional_t<store, typename dx::promoted<uint32_t>::template preference<decltype(device_t::preference)>, dx::promoted<uint32_t> > dx::stream::settings< device_t, store >::promoted
inherited

◆ stream_t

typedef device_t::stream_t dx::stream::group< device_t, dx::free_run< dx::shared::event > >::stream_t
inherited

◆ transport

the group's two sides, reached as transport::/client:: members

Constructor & Destructor Documentation

◆ group()

template<typename device_t>
template<typename... args_t>
dx::service::client::group< device_t >::group ( args_t &&... args)
inline

the service hosts this group's session: its start/stop rides this group's own start edge

Here is the call graph for this function:

Member Function Documentation

◆ __dx_catchall()

template<typename object_t>
dx::stream::control< object_t >::__dx_catchall ( std::cerr<< dx::exception &,.,,, __LINE__<< std::endl; )
inlinenoexceptinherited

◆ info()

◆ key() [1/2]

template<typename device_t, bool store = true>
std::string dx::stream::settings< device_t, store >::client::key ( direction::direction direction,
uint32_t  )
inlinestaticinherited
Here is the caller graph for this function:

◆ key() [2/2]

template<typename device_t, bool store = true>
std::string dx::stream::settings< device_t, store >::transport::key ( direction::direction direction,
uint32_t strategy )
inlinestaticinherited
Here is the caller graph for this function:

◆ tick()

void dx::stream::group< device_t, dx::free_run< dx::shared::event > >::tick ( )
inlineoverrideprotectedinherited

the plain container has no transport of its own: a bus whose group moves the data overrides this, a group fed from outside (service, kernel, SDK callback) has nothing to do here

Member Data Documentation

◆ device

also the mutex serializing membership against the tick

◆ flush_hook

template<typename object_t>
std::function<void()> dx::stream::control< object_t >::flush_hook = []{}
protectedinherited

◆ halt_hook

template<typename object_t>
std::function<void()> dx::stream::control< object_t >::halt_hook = []{}
protectedinherited

◆ run_hook

template<typename object_t>
std::function<void()> dx::stream::control< object_t >::run_hook = []{}
protectedinherited

◆ safety_offset [1/2]

template<typename device_t, bool store = true>
promoted dx::stream::settings< device_t, store >::safety_offset[direction::directions]
inherited

◆ safety_offset [2/2]

promoted dx::stream::settings< device_t, store >::safety_offset[direction::directions]
inherited

◆ start

template<typename object_t>
promoted<uint32_t> dx::stream::control< object_t >::start {0}
inherited

◆ started

template<typename object_t>
promoted<bool> dx::stream::control< object_t >::started {false}
inherited

◆ streams

std::map<decltype(stream_t::target.idx()), std::weak_ptr<stream_t> > dx::stream::group< device_t, dx::free_run< dx::shared::event > >::streams
inherited

shared stream ownership: central weak reference per stream, guarded by device

◆ sync_strategy [1/2]

template<typename device_t, bool store = true>
promoted dx::stream::settings< device_t, store >::sync_strategy
inherited

◆ sync_strategy [2/2]

◆ sync_strategy_server

template<typename device_t>
chain<uint32_t, typename device_t::request> dx::service::client::group< device_t >::sync_strategy_server {this->device.pipe, this->transport::sync_strategy, device_t::request::id::sync_strategy}

◆ transport_safety_offset_in_server

template<typename device_t>
chain<uint32_t, typename device_t::request> dx::service::client::group< device_t >::transport_safety_offset_in_server {this->device.pipe, this->transport::safety_offset[dx::stream::direction::in], device_t::request::id::transport_safety_offset_in}

◆ transport_safety_offset_out_server

template<typename device_t>
chain<uint32_t, typename device_t::request> dx::service::client::group< device_t >::transport_safety_offset_out_server {this->device.pipe, this->transport::safety_offset[dx::stream::direction::out], device_t::request::id::transport_safety_offset_out}

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.