#include <iostream>
#include <stdexcept>
#include <sstream>
#include <chrono>
{
a.
event( a, [](
const std::string & value ) ->
int {
std::istringstream s( value );
int result;
s >> result;
if( s.fail() )
throw std::invalid_argument( "unable to convert to int: '" + value + "'" );
if( 42 == result )
std::this_thread::sleep_for( std::chrono::milliseconds(150) );
return result;
} );
}
{
public :
, m_svc_mbox(
std::move(svc_mbox) )
{}
{
std::string values_to_convert[] = {
"1", "2", "a1", "a2", "3", "a3", "41", "42", "43" };
for( const auto & s : values_to_convert )
{
try
{
std::cout << "converting '" << s << "'" << std::flush;
auto r = so_5::request_value< int, std::string >(
m_svc_mbox, std::chrono::milliseconds(100), s );
std::cout << "' -> " << r << std::endl;
}
catch( const std::exception & x )
{
std::cerr << "\n*** an exception during converting "
"value '" << s << "': " << x.what()
<< std::endl;
}
}
}
private :
};
int main()
{
try
{
auto service = make_converter( coop );
} );
} );
}
catch( const std::exception & ex )
{
std::cerr << "Error: " << ex.what() << std::endl;
return 1;
}
return 0;
}