#include <iostream>
#include <string>
struct two_ints
{
int a, b;
};
struct delayed_two_ints
{
int a, b;
};
void demo()
{
std::chrono::minutes{5},
3u,
std::thread worker{ [&]{
so_5::send< std::string >( ch, "Hello!" );
so_5::send< int >( ch, 42 );
so_5::send< two_ints >( ch, 0, 1 );
so_5::send_delayed< delayed_two_ints >(
ch, std::chrono::milliseconds{150}, 1, 2 );
so_5::send< just_signal >( ch );
periodic_signal_timer = so_5::send_periodic< periodic_signal >(
ch, std::chrono::milliseconds{20}, std::chrono::milliseconds{150} );
} };
[]( const std::string & v ) { std::cout << "str: " << v << std::endl; },
[]( int v ) { std::cout << "int: " << v << std::endl; },
std::cout << "two_ints: " << v->a << ", " << v->b << std::endl;
},
std::cout << "delayed_two_ints: " << v->a << ", " << v->b << std::endl;
},
std::cout << "just signal" << std::endl;
},
std::cout << "periodic signal" << std::endl;
} );
worker.join();
}
int main()
{
try
{
demo();
}
catch( const std::exception & ex )
{
std::cerr << "Error: " << ex.what() << std::endl;
}
return 0;
}