SObjectizer 5.8
Loading...
Searching...
No Matches
so_5::extensible_select_t Class Reference

Special container for holding select parameters and select cases. More...

#include <mchain_select.hpp>

Public Member Functions

 extensible_select_t (const extensible_select_t &)=delete
 
extensible_select_toperator= (const extensible_select_t &)=delete
 
 extensible_select_t ()=default
 Default constructor.
 
 extensible_select_t (extensible_select_t &&other) noexcept
 Move constructor.
 
extensible_select_toperator= (extensible_select_t &&other) noexcept
 Move operator.
 
bool empty () const noexcept
 Is this handle empty?
 
Getters
auto & data () const noexcept
 

Private Member Functions

 extensible_select_t (std::unique_ptr< mchain_props::details::extensible_select_data_t > data)
 Actual initializing constructor.
 

Private Attributes

std::unique_ptr< mchain_props::details::extensible_select_data_tm_data
 Actual data for that extensible-select.
 

Friends

template<mchain_props::msg_count_status_t Msg_Count_Status, typename... Cases>
extensible_select_t make_extensible_select (mchain_select_params_t< Msg_Count_Status > params, Cases &&... cases)
 Creation of extensible-select instance.
 
void swap (extensible_select_t &a, extensible_select_t &b) noexcept
 Swap operation.
 

Detailed Description

Special container for holding select parameters and select cases.

This type is a handle for extensible-select instance. It's like unique_ptr. Just one instance of extensible_select_t owns the instance of extensible-select.

Attention
Because extensible_select_t is like to unique_ptr it can be in an empty state (it means that there is no actual extensible-select instance behind the handle). Usage of empty extensible_select_t object in call to select() is an error. SObjectizer doesn't check the emptiness of extensible_select_t object. An attempt to pass an empty extensible_select_t to select() will lead to null-pointer dereference.
Note
This is Moveable type but not Copyable.
Since
v.5.6.1

Definition at line 1975 of file mchain_select.hpp.

Constructor & Destructor Documentation

◆ extensible_select_t() [1/4]

so_5::extensible_select_t::extensible_select_t ( std::unique_ptr< mchain_props::details::extensible_select_data_t > data)
inlineprivate

Actual initializing constructor.

Definition at line 1989 of file mchain_select.hpp.

◆ extensible_select_t() [2/4]

so_5::extensible_select_t::extensible_select_t ( const extensible_select_t & )
delete

◆ extensible_select_t() [3/4]

so_5::extensible_select_t::extensible_select_t ( )
default

Default constructor.

Attention
This constructor is intended for the cases like that:
class some_my_data {
so_5::extensible_select_t m_select_handle;
...
void on_some_stage() {
m_select_handle = so_5::make_extensible_select(...);
...
}
void on_another_stage() {
so_5::add_select_cases(m_select_handle, ...);
...
}
void on_yet_another_stage() {
auto r = so_5::select(m_select_handle);
...
}
...
};
Special container for holding select parameters and select cases.
void add_select_cases(extensible_select_t &extensible_select, Cases &&... cases)
Add a portion of cases to extensible-select instance.
mchain_select_result_t select(const mchain_select_params_t< Msg_Count_Status > &params, Cases &&... cases)
An advanced form of multi chain select.
extensible_select_t make_extensible_select(mchain_select_params_t< Msg_Count_Status > params, Cases &&... cases)
Creation of extensible-select instance.

◆ extensible_select_t() [4/4]

so_5::extensible_select_t::extensible_select_t ( extensible_select_t && other)
inlinenoexcept

Move constructor.

Definition at line 2026 of file mchain_select.hpp.

Member Function Documentation

◆ data()

auto & so_5::extensible_select_t::data ( ) const
inlinenoexcept

Definition at line 2057 of file mchain_select.hpp.

◆ empty()

bool so_5::extensible_select_t::empty ( ) const
inlinenoexcept

Is this handle empty?

Definition at line 2050 of file mchain_select.hpp.

◆ operator=() [1/2]

extensible_select_t & so_5::extensible_select_t::operator= ( const extensible_select_t & )
delete

◆ operator=() [2/2]

extensible_select_t & so_5::extensible_select_t::operator= ( extensible_select_t && other)
inlinenoexcept

Move operator.

Definition at line 2033 of file mchain_select.hpp.

Friends And Related Symbol Documentation

◆ make_extensible_select

template<mchain_props::msg_count_status_t Msg_Count_Status, typename... Cases>
extensible_select_t make_extensible_select ( mchain_select_params_t< Msg_Count_Status > params,
Cases &&... cases )
friend

Creation of extensible-select instance.

This function creates an instance of extensible-select object that can be used for subsequent calls to add_select_cases() and select().

Usage examples:

// Creation of extensible-select instance with initial set of cases.
so_5::from_all().handle_n(10),
receive_case(ch1, ...),
receive_case(ch2, ...));
// Creation of extensible-select instance without initial set of cases.
so_5::from_all().handle_n(20));
// Cases should be added later.
receive_case(ch2, ...),
receive_case(ch3, ...));
mchain_select_params_t< mchain_props::msg_count_status_t::undefined > from_all()
Helper function for creation of mchain_select_params instance with default values.
mchain_props::select_case_unique_ptr_t receive_case(mchain_t chain, Handlers &&... handlers)
A helper for creation of select_case object for one multi chain select.
Note
Since v.5.8.4 the value of empty_timeout (or no_wait_on_empty) is taken into account when total_time is specified. It means that in the following example the select() returns immediately if all mchains are empty:
// Creation of extensible-select instance with initial set of cases.
so_5::from_all().handle_n(10).no_wait_on_empty().total_time(6s),
receive_case(ch1, ...),
receive_case(ch2, ...));
...
so_5::add_select_cases(sel, ...);
...
auto r = select(sel);
Since
v.5.6.1
Parameters
paramsParameters for advanced select.
casesSelect cases.

Definition at line 2112 of file mchain_select.hpp.

◆ swap

void swap ( extensible_select_t & a,
extensible_select_t & b )
friend

Swap operation.

Definition at line 2042 of file mchain_select.hpp.

Member Data Documentation

◆ m_data

std::unique_ptr< mchain_props::details::extensible_select_data_t > so_5::extensible_select_t::m_data
private

Actual data for that extensible-select.

Definition at line 1986 of file mchain_select.hpp.


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