SObjectizer  5.5
Public Types | Public Member Functions | Protected Member Functions | Private Attributes | List of all members
so_5::mchain_bulk_processing_params_t< Derived > Class Template Reference

Basic parameters for advanced receive from mchain and for multi chain select. More...

#include <mchain.hpp>

Public Types

using actual_type = Derived
 Actual type of params. More...
 
using stop_predicate = std::function< bool() >
 Type of stop-predicate. More...
 
using chain_closed_handler = std::function< void(const mchain_t &) >
 Type of chain-closed event. More...
 

Public Member Functions

actual_typeextract_n (std::size_t v)
 Set limit for count of messages to be extracted. More...
 
std::size_t to_extract () const
 Get limit for count of messages to be extracted. More...
 
actual_typehandle_n (std::size_t v)
 Set limit for count of messages to be handled. More...
 
std::size_t to_handle () const
 Get limit for count of message to be handled. More...
 
template<typename Timeout >
actual_typeempty_timeout (Timeout v)
 Set timeout for waiting on empty chain. More...
 
const mchain_props::duration_tempty_timeout () const
 Get timeout for waiting on empty chain. More...
 
actual_typeno_wait_on_empty ()
 Disable waiting on the empty queue. More...
 
template<typename Timeout >
actual_typetotal_time (Timeout v)
 Set total time for the whole receive operation. More...
 
const mchain_props::duration_ttotal_time () const
 Get total time for the whole receive operation. More...
 
actual_typestop_on (stop_predicate predicate)
 Set user condition for stopping receive operation. More...
 
const stop_predicatestop_on () const
 Get user condition for stopping receive operation. More...
 
actual_typeon_close (chain_closed_handler handler)
 Set handler for chain-closed event. More...
 
const chain_closed_handlerclosed_handler () const
 Get handler for chain-closed event. More...
 

Protected Member Functions

actual_typeself_reference ()
 

Private Attributes

std::size_t m_to_extract = { 0 }
 Minimal count of messages to be extracted. More...
 
std::size_t m_to_handle = { 0 }
 Minimal count of messages to be handled. More...
 
mchain_props::duration_t m_empty_timeout
 Timeout for waiting on empty queue. More...
 
mchain_props::duration_t m_total_time
 Total time for all work of advanced receive. More...
 
stop_predicate m_stop_predicate
 Optional stop-predicate. More...
 
chain_closed_handler m_chain_closed_handler
 Optional chain-closed handler. More...
 

Detailed Description

template<typename Derived>
class so_5::mchain_bulk_processing_params_t< Derived >

Basic parameters for advanced receive from mchain and for multi chain select.

Since
v.5.5.16

Member Typedef Documentation

◆ actual_type

template<typename Derived>
using so_5::mchain_bulk_processing_params_t< Derived >::actual_type = Derived

Actual type of params.

◆ chain_closed_handler

template<typename Derived>
using so_5::mchain_bulk_processing_params_t< Derived >::chain_closed_handler = std::function< void(const mchain_t &) >

Type of chain-closed event.

Since
v.5.5.17

◆ stop_predicate

template<typename Derived>
using so_5::mchain_bulk_processing_params_t< Derived >::stop_predicate = std::function< bool() >

Type of stop-predicate.

Must return true if receive procedure should be stopped.

Member Function Documentation

◆ closed_handler()

template<typename Derived>
const chain_closed_handler& so_5::mchain_bulk_processing_params_t< Derived >::closed_handler ( ) const
inline

Get handler for chain-closed event.

Since
v.5.5.17

◆ empty_timeout() [1/2]

template<typename Derived>
template<typename Timeout >
actual_type& so_5::mchain_bulk_processing_params_t< Derived >::empty_timeout ( Timeout  v)
inline

Set timeout for waiting on empty chain.

Note
This value will be ignored if total_time() is also used to set total receive time.
Argument v can be of type duration_t or so_5::infinite_wait or so_5::no_wait.

◆ empty_timeout() [2/2]

template<typename Derived>
const mchain_props::duration_t& so_5::mchain_bulk_processing_params_t< Derived >::empty_timeout ( ) const
inline

Get timeout for waiting on empty chain.

◆ extract_n()

template<typename Derived>
actual_type& so_5::mchain_bulk_processing_params_t< Derived >::extract_n ( std::size_t  v)
inline

Set limit for count of messages to be extracted.

◆ handle_n()

template<typename Derived>
actual_type& so_5::mchain_bulk_processing_params_t< Derived >::handle_n ( std::size_t  v)
inline

Set limit for count of messages to be handled.

◆ no_wait_on_empty()

template<typename Derived>
actual_type& so_5::mchain_bulk_processing_params_t< Derived >::no_wait_on_empty ( )
inline

Disable waiting on the empty queue.

Usage example:
Note
It is just a shorthand for:
receive( from(chain).empty_timeout(std::chrono::seconds(0)), ...);

◆ on_close()

template<typename Derived>
actual_type& so_5::mchain_bulk_processing_params_t< Derived >::on_close ( chain_closed_handler  handler)
inline

Set handler for chain-closed event.

If there is a previously set handler the old handler will be lost.

Usage example:

...
// Stop reading channels when any of channels is closed.
bool some_ch_closed = false;
.on_close([&some_ch_closed](const so_5::mchain_t &) {
some_ch_closed = true;
})
.stop_on([&some_ch_closed]{ return some_ch_closed; }),
case_(ch1, ...)
case_(ch2, ...)
...);
Since
v.5.5.17

◆ self_reference()

template<typename Derived>
actual_type& so_5::mchain_bulk_processing_params_t< Derived >::self_reference ( )
inlineprotected

◆ stop_on() [1/2]

template<typename Derived>
actual_type& so_5::mchain_bulk_processing_params_t< Derived >::stop_on ( stop_predicate  predicate)
inline

Set user condition for stopping receive operation.

Note
predicate should return true if receive must be stopped.

◆ stop_on() [2/2]

template<typename Derived>
const stop_predicate& so_5::mchain_bulk_processing_params_t< Derived >::stop_on ( ) const
inline

Get user condition for stopping receive operation.

◆ to_extract()

template<typename Derived>
std::size_t so_5::mchain_bulk_processing_params_t< Derived >::to_extract ( ) const
inline

Get limit for count of messages to be extracted.

◆ to_handle()

template<typename Derived>
std::size_t so_5::mchain_bulk_processing_params_t< Derived >::to_handle ( ) const
inline

Get limit for count of message to be handled.

◆ total_time() [1/2]

template<typename Derived>
template<typename Timeout >
actual_type& so_5::mchain_bulk_processing_params_t< Derived >::total_time ( Timeout  v)
inline

Set total time for the whole receive operation.

Note
Argument v can be of type duration_t or so_5::infinite_wait or so_5::no_wait.

◆ total_time() [2/2]

template<typename Derived>
const mchain_props::duration_t& so_5::mchain_bulk_processing_params_t< Derived >::total_time ( ) const
inline

Get total time for the whole receive operation.

Member Data Documentation

◆ m_chain_closed_handler

template<typename Derived>
chain_closed_handler so_5::mchain_bulk_processing_params_t< Derived >::m_chain_closed_handler
private

Optional chain-closed handler.

Since
v.5.5.17

◆ m_empty_timeout

template<typename Derived>
mchain_props::duration_t so_5::mchain_bulk_processing_params_t< Derived >::m_empty_timeout
private
Initial value:

Timeout for waiting on empty queue.

◆ m_stop_predicate

template<typename Derived>
stop_predicate so_5::mchain_bulk_processing_params_t< Derived >::m_stop_predicate
private

Optional stop-predicate.

◆ m_to_extract

template<typename Derived>
std::size_t so_5::mchain_bulk_processing_params_t< Derived >::m_to_extract = { 0 }
private

Minimal count of messages to be extracted.

Value 0 means that this parameter is not set.

◆ m_to_handle

template<typename Derived>
std::size_t so_5::mchain_bulk_processing_params_t< Derived >::m_to_handle = { 0 }
private

Minimal count of messages to be handled.

Value 0 means that this parameter it not set.

◆ m_total_time

template<typename Derived>
mchain_props::duration_t so_5::mchain_bulk_processing_params_t< Derived >::m_total_time
private
Initial value:

Total time for all work of advanced receive.


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