#include <iostream>
#include <time.h>
{
struct greeting_message
{
const std::string m_greeting;
};
const state_t st_1{
this,
"state_1" };
const state_t st_2{
this,
"state_2" };
const state_t st_3{
this,
"state_3" };
const state_t st_shutdown{
this,
"shutdown" };
public:
{}
virtual ~a_state_swither_t() override
{}
virtual void
{
.
event< change_state_signal >( [=] {
this >>= st_1; } )
.
event( [=](
const greeting_message & msg ) {
std::cout << "*** 0) greeting: " << msg.m_greeting
<< ", ptr: " << &msg << std::endl;
} );
st_1
.event< change_state_signal >( [=] { this >>= st_2; } );
st_2
.event< change_state_signal >( [=] { this >>= st_3; } )
.
event( [=](
const greeting_message & msg ) {
std::cout << "*** 2) greeting: " << msg.m_greeting
<< ", ptr: " << &msg << std::endl;
} );
st_3
.event< change_state_signal >( [=] { this >>= st_shutdown; } );
st_shutdown
.event< change_state_signal >( [=] {
.
event( [=](
const greeting_message & msg ) {
std::cout << "*** F) greeting: " << msg.m_greeting
<< ", ptr: " << &msg << std::endl;
} );
}
{
m_greeting_timer_id = so_5::send_periodic< greeting_message >(
*this,
std::chrono::milliseconds{ 50 },
std::chrono::milliseconds{ 100 },
"Hello, World!" );
m_change_timer_id = so_5::send_periodic< change_state_signal >(
*this,
std::chrono::milliseconds{ 80 },
std::chrono::milliseconds{ 100 } );
}
private:
};
int main()
{
try
{
} );
},
params.message_delivery_tracer(
} );
}
catch( const std::exception & ex )
{
std::cerr << "Error: " << ex.what() << std::endl;
return 1;
}
return 0;
}