SObjectizer  5.7
Classes | Typedefs | Enumerations | Functions
so_5::mchain_props::details Namespace Reference

Implementation details. More...

Classes

class  actual_receive_select_case_t
 Actual implementation of one multi chain select case. More...
 
class  actual_select_notificator_t
 Actual implementation of notificator for multi chain select. More...
 
class  actual_send_select_case_t
 The actual implementation of select_case for the case of sending a message. More...
 
struct  adv_receive_data_t
 Container of parameters for receive() function. More...
 
struct  bulk_processing_basic_data_t
 
class  extensible_select_cases_holder_t
 A holder for serie of select_cases for the case of extensible select. More...
 
class  extensible_select_data_t
 A data for extensible-select instance. More...
 
class  limited_dynamic_demand_queue
 Implementation of demands queue for size-limited message chain with dynamically allocated storage. More...
 
class  limited_preallocated_demand_queue
 Implementation of demands queue for size-limited message chain with preallocated storage. More...
 
class  mchain_bulk_processing_basic_params_t
 
class  prepared_select_data_t
 A data for prepared-select instance. More...
 
class  receive_actions_performer_t
 Helper class with implementation of main actions of advanced receive operation. More...
 
class  receive_select_case_t
 A base class for implementations of select_case for the case of receiving messages. More...
 
class  select_actions_performer_t
 Helper class for performing select-specific operations. More...
 
class  select_cases_holder_t
 A holder for serie of select_cases. More...
 
class  send_select_case_t
 A base class for implementations of select_case for the case of sending messages. More...
 
class  unlimited_demand_queue
 Implementation of demands queue for size-unlimited message chain. More...
 

Typedefs

using adv_select_data_t = bulk_processing_basic_data_t
 

Enumerations

enum  status { status::open, status::closed }
 Status of the message chain. More...
 
enum  prepared_select_status_t { prepared_select_status_t::passive, prepared_select_status_t::active }
 The current status of prepared-select instance. More...
 
enum  extensible_select_status_t { extensible_select_status_t::passive, extensible_select_status_t::active }
 The current status of extensible-select instance. More...
 

Functions

template<typename Q >
void ensure_queue_not_empty (Q &&queue)
 Helper function which throws an exception if queue is empty. More...
 
template<typename Q >
void ensure_queue_not_full (Q &&queue)
 Helper function which throws an exception if queue is full. More...
 
duration_t no_wait_special_timevalue ()
 Special value of duration to indicate 'no_wait' case. More...
 
duration_t infinite_wait_special_timevalue ()
 Special value of duration to indicate 'infinite_wait' case. More...
 
bool is_no_wait_timevalue (duration_t v)
 Is time value means 'no_wait'? More...
 
bool is_infinite_wait_timevalue (duration_t v)
 Is time value means 'infinite_wait'? More...
 
duration_t actual_timeout (infinite_wait_indication)
 Helper function for detection of actual value for waiting timeout. More...
 
duration_t actual_timeout (no_wait_indication)
 Helper function for detection of actual value for waiting timeout. More...
 
template<typename V >
duration_t actual_timeout (V value)
 Helper function for detection of actual value for waiting timeout. More...
 
template<typename Bunch >
mchain_receive_result_t receive_with_finite_total_time (const mchain_receive_params_t< msg_count_status_t::defined > &params, const Bunch &bunch)
 An implementation of advanced receive when a limit for total operation time is defined. More...
 
template<typename Bunch >
mchain_receive_result_t receive_without_total_time (const mchain_receive_params_t< msg_count_status_t::defined > &params, const Bunch &bunch)
 An implementation of advanced receive when there is no limit for total operation time is defined. More...
 
template<typename Bunch >
mchain_receive_result_t perform_receive (const mchain_receive_params_t< msg_count_status_t::defined > &params, const Bunch &bunch)
 An implementation of main receive actions. More...
 
template<typename Holder >
void fill_select_cases_holder (Holder &holder, std::size_t index, select_case_unique_ptr_t c)
 
template<typename Holder , typename... Cases>
void fill_select_cases_holder (Holder &holder, std::size_t index, select_case_unique_ptr_t c, Cases &&... other_cases)
 
void fill_select_cases_holder (extensible_select_cases_holder_t &)
 
template<typename... Cases>
void fill_select_cases_holder (extensible_select_cases_holder_t &holder, select_case_unique_ptr_t c, Cases &&... other_cases)
 
template<typename Holder >
mchain_select_result_t do_adv_select_with_total_time (const mchain_select_params_t< msg_count_status_t::defined > &params, const Holder &select_cases)
 
template<typename Holder >
mchain_select_result_t do_adv_select_without_total_time (const mchain_select_params_t< msg_count_status_t::defined > &params, const Holder &select_cases)
 
template<typename Cases_Holder >
mchain_select_result_t perform_select (const mchain_select_params_t< msg_count_status_t::defined > &params, const Cases_Holder &cases_holder)
 Helper function with implementation of main select action. More...
 

Detailed Description

Implementation details.

Since
v.5.5.13

Typedef Documentation

◆ adv_select_data_t

Enumeration Type Documentation

◆ extensible_select_status_t

The current status of extensible-select instance.

If extensible-select instance is activated (is used in select() call) then this instance can't be modified or activated yet more time.

Since
v.5.6.1
Enumerator
passive 

Extensible-select instance is not used in select() call.

active 

Extensible-select instance is used in select() call now.

◆ prepared_select_status_t

The current status of prepared-select instance.

If prepared-select instance is activated (is used in select() call) then this instance can't be activated yet more time.

Since
v.5.6.1
Enumerator
passive 

Prepared-select instance is not used in select() call.

active 

Prepared-select instance is used in select() call now.

◆ status

Status of the message chain.

Since
v.5.5.13
Enumerator
open 

Bag is open and can be used for message sending.

closed 

Bag is closed. New messages cannot be sent to it.

Examples:
so_5/machine_control/main.cpp, and so_5/make_agent_ref/main.cpp.

Function Documentation

◆ actual_timeout() [1/3]

duration_t so_5::mchain_props::details::actual_timeout ( infinite_wait_indication  )
inline

Helper function for detection of actual value for waiting timeout.

Since
v.5.5.13
Note
This helper implements convention that infinite waiting is represented as duration_t::max() value.

◆ actual_timeout() [2/3]

duration_t so_5::mchain_props::details::actual_timeout ( no_wait_indication  )
inline

Helper function for detection of actual value for waiting timeout.

Since
v.5.5.13
Note
This helper implements convention that no waiting is represented as duration_t::zero() value.

◆ actual_timeout() [3/3]

template<typename V >
duration_t so_5::mchain_props::details::actual_timeout ( value)

Helper function for detection of actual value for waiting timeout.

Since
v.5.5.13

◆ do_adv_select_with_total_time()

template<typename Holder >
mchain_select_result_t so_5::mchain_props::details::do_adv_select_with_total_time ( const mchain_select_params_t< msg_count_status_t::defined > &  params,
const Holder &  select_cases 
)

◆ do_adv_select_without_total_time()

template<typename Holder >
mchain_select_result_t so_5::mchain_props::details::do_adv_select_without_total_time ( const mchain_select_params_t< msg_count_status_t::defined > &  params,
const Holder &  select_cases 
)

◆ ensure_queue_not_empty()

template<typename Q >
void so_5::mchain_props::details::ensure_queue_not_empty ( Q &&  queue)

Helper function which throws an exception if queue is empty.

Since
v.5.5.13

◆ ensure_queue_not_full()

template<typename Q >
void so_5::mchain_props::details::ensure_queue_not_full ( Q &&  queue)

Helper function which throws an exception if queue is full.

Since
v.5.5.13

◆ fill_select_cases_holder() [1/4]

template<typename Holder >
void so_5::mchain_props::details::fill_select_cases_holder ( Holder &  holder,
std::size_t  index,
select_case_unique_ptr_t  c 
)

◆ fill_select_cases_holder() [2/4]

template<typename Holder , typename... Cases>
void so_5::mchain_props::details::fill_select_cases_holder ( Holder &  holder,
std::size_t  index,
select_case_unique_ptr_t  c,
Cases &&...  other_cases 
)

◆ fill_select_cases_holder() [3/4]

void so_5::mchain_props::details::fill_select_cases_holder ( extensible_select_cases_holder_t )
inline

◆ fill_select_cases_holder() [4/4]

template<typename... Cases>
void so_5::mchain_props::details::fill_select_cases_holder ( extensible_select_cases_holder_t holder,
select_case_unique_ptr_t  c,
Cases &&...  other_cases 
)

◆ infinite_wait_special_timevalue()

duration_t so_5::mchain_props::details::infinite_wait_special_timevalue ( )
inline

Special value of duration to indicate 'infinite_wait' case.

Since
v.5.5.13

◆ is_infinite_wait_timevalue()

bool so_5::mchain_props::details::is_infinite_wait_timevalue ( duration_t  v)
inline

Is time value means 'infinite_wait'?

Since
v.5.5.13

◆ is_no_wait_timevalue()

bool so_5::mchain_props::details::is_no_wait_timevalue ( duration_t  v)
inline

Is time value means 'no_wait'?

Since
v.5.5.13

◆ no_wait_special_timevalue()

duration_t so_5::mchain_props::details::no_wait_special_timevalue ( )
inline

Special value of duration to indicate 'no_wait' case.

Since
v.5.5.13

◆ perform_receive()

template<typename Bunch >
mchain_receive_result_t so_5::mchain_props::details::perform_receive ( const mchain_receive_params_t< msg_count_status_t::defined > &  params,
const Bunch &  bunch 
)
inline

An implementation of main receive actions.

Since
v.5.5.17

◆ perform_select()

template<typename Cases_Holder >
mchain_select_result_t so_5::mchain_props::details::perform_select ( const mchain_select_params_t< msg_count_status_t::defined > &  params,
const Cases_Holder &  cases_holder 
)

Helper function with implementation of main select action.

Since
v.5.5.17
Parameters
paramsParameters for advanced select.
cases_holderSelect cases.

◆ receive_with_finite_total_time()

template<typename Bunch >
mchain_receive_result_t so_5::mchain_props::details::receive_with_finite_total_time ( const mchain_receive_params_t< msg_count_status_t::defined > &  params,
const Bunch &  bunch 
)
inline

An implementation of advanced receive when a limit for total operation time is defined.

Since
v.5.5.13

◆ receive_without_total_time()

template<typename Bunch >
mchain_receive_result_t so_5::mchain_props::details::receive_without_total_time ( const mchain_receive_params_t< msg_count_status_t::defined > &  params,
const Bunch &  bunch 
)
inline

An implementation of advanced receive when there is no limit for total operation time is defined.

Since
v.5.5.13