SObjectizer  5.5
Public Member Functions | Private Attributes | List of all members
so_5::mchain_master_handle_t Class Reference

Helper class for automatic close of a mchain at the destruction of master handle instance. More...

#include <mchain_helper_functions.hpp>

Public Member Functions

 mchain_master_handle_t (const mchain_master_handle_t &)=delete
 
mchain_master_handle_toperator= (const mchain_master_handle_t &)=delete
 
 mchain_master_handle_t (mchain_t chain, mchain_props::close_mode_t close_mode) noexcept
 Initializing constructor. More...
 
 mchain_master_handle_t (mchain_master_handle_t &&handle) noexcept
 Move constructor. More...
 
 ~mchain_master_handle_t ()
 Destructor closes the chain. More...
 
mchain_master_handle_toperator= (mchain_master_handle_t &&handle) noexcept
 Move operator. More...
 
void swap (mchain_master_handle_t &other) noexcept
 Swap operation. More...
 
const mchain_tget () const noexcept
 Get the mchain. More...
 
const mchain_toperator* () const noexcept
 Get the mchain. More...
 

Static Public Member Functions

Helpers methods for master handle creation.
static mchain_master_handle_t make (mchain_t chain, mchain_props::close_mode_t close_mode) noexcept
 
static mchain_master_handle_t with_drop_content (mchain_t chain) noexcept
 
static mchain_master_handle_t with_retain_content (mchain_t chain) noexcept
 

Private Attributes

mchain_t m_chain
 Chain to be hold. More...
 
mchain_props::close_mode_t m_close_mode
 Close mode for mchain. More...
 

Detailed Description

Helper class for automatic close of a mchain at the destruction of master handle instance.

This class is intended for cases like that:

auto ch = so_5::create_mchain( env );
auto ch_closer = so_5::auto_close_drop_content( ch );
...

The example shown above can be replaced by:

Note
This class is moveable but not copyable.
Since
v.5.5.17

Constructor & Destructor Documentation

◆ mchain_master_handle_t() [1/3]

so_5::mchain_master_handle_t::mchain_master_handle_t ( const mchain_master_handle_t )
delete

◆ mchain_master_handle_t() [2/3]

so_5::mchain_master_handle_t::mchain_master_handle_t ( mchain_t  chain,
mchain_props::close_mode_t  close_mode 
)
inlinenoexcept

Initializing constructor.

Parameters
chainA mchain itself.
close_modeClose mode for mchain.

◆ mchain_master_handle_t() [3/3]

so_5::mchain_master_handle_t::mchain_master_handle_t ( mchain_master_handle_t &&  handle)
inlinenoexcept

Move constructor.

◆ ~mchain_master_handle_t()

so_5::mchain_master_handle_t::~mchain_master_handle_t ( )
inline

Destructor closes the chain.

Member Function Documentation

◆ get()

const mchain_t& so_5::mchain_master_handle_t::get ( ) const
inlinenoexcept

Get the mchain.

◆ make()

static mchain_master_handle_t so_5::mchain_master_handle_t::make ( mchain_t  chain,
mchain_props::close_mode_t  close_mode 
)
inlinestaticnoexcept
Usage example:
void demo( so_5::environment_t & env, app_config & config )
{
std::thread worker;
auto worker_joiner = so_5::auto_join( worker );
create_mchain( env ),
detect_close_mode( config ) );
worker = std::thread( [ch = *chain]{ ... } );
...
}

◆ operator*()

const mchain_t& so_5::mchain_master_handle_t::operator* ( ) const
inlinenoexcept

Get the mchain.

◆ operator=() [1/2]

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

◆ operator=() [2/2]

mchain_master_handle_t& so_5::mchain_master_handle_t::operator= ( mchain_master_handle_t &&  handle)
inlinenoexcept

Move operator.

◆ swap()

void so_5::mchain_master_handle_t::swap ( mchain_master_handle_t other)
inlinenoexcept

Swap operation.

◆ with_drop_content()

static mchain_master_handle_t so_5::mchain_master_handle_t::with_drop_content ( mchain_t  chain)
inlinestaticnoexcept
Usage example:
void demo( so_5::environment_t & env )
{
std::thread worker;
auto worker_joiner = so_5::auto_join( worker );
create_mchain( env ) );
worker = std::thread( [ch = *chain]{ ... } );
...
}

◆ with_retain_content()

static mchain_master_handle_t so_5::mchain_master_handle_t::with_retain_content ( mchain_t  chain)
inlinestaticnoexcept
Usage example:
void demo( so_5::environment_t & env )
{
std::thread worker;
auto worker_joiner = so_5::auto_join( worker );
create_mchain( env ) );
worker = std::thread( [ch = *chain]{ ... } );
...
}

Member Data Documentation

◆ m_chain

mchain_t so_5::mchain_master_handle_t::m_chain
private

Chain to be hold.

◆ m_close_mode

mchain_props::close_mode_t so_5::mchain_master_handle_t::m_close_mode
private

Close mode for mchain.


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