SObjectizer  5.1
so_5/exception_handler

main.cpp

/*
Пример логера исключений.
*/
#include <iostream>
#include <stdexcept>
// Загружаем основные заголовочные файлы SObjectizer.
#include <so_5/rt/h/rt.hpp>
// Исполнитель обработки исключения.
// Завершает работу SObjectizer.
class sample_event_exception_response_action_t
:
{
public:
sample_event_exception_response_action_t(
// Среда SObjectizer.
so_5::rt::so_environment_t & so_environment )
:
m_so_environment( so_environment )
{}
virtual ~sample_event_exception_response_action_t()
{}
virtual void
{
std::cout
<< "Respond to exception: stop SO Environment."
<< std::endl;
m_so_environment.stop();
}
private:
so_5::rt::so_environment_t & m_so_environment;
};
// Логер исключений.
class sample_event_exception_handler_t
:
{
public:
virtual ~sample_event_exception_handler_t()
{}
// Выполнить обработку исключения.
so_5::rt::so_environment_t & so_environment,
const std::exception & ,
const std::string & )
{
new sample_event_exception_response_action_t( so_environment ) );
}
};
// C++ описание класса агента.
class a_hello_t
:
{
typedef so_5::rt::agent_t base_type_t;
public:
a_hello_t( so_5::rt::so_environment_t & env )
:
// Передаем среду SObjectizer, к которой принадлежит агент.
base_type_t( env )
{}
virtual ~a_hello_t()
{}
// Обработка начала работы агента в системе.
virtual void
{
new sample_event_exception_handler_t ) );
throw std::runtime_error( "sample exception" );
}
};
// Инициализация окружения
void
{
// Создаем кооперацию.
// Добавляем в кооперацию агента.
coop->add_agent(
new a_hello_t( env ) ) );
// Регистрируем кооперацию.
env.register_coop( std::move( coop ) );
}
int
main( int, char ** )
{
try
{
}
catch( const std::exception & ex )
{
std::cerr << "Error: " << ex.what() << std::endl;
return 1;
}
return 0;
}

Документация по SObjectizer v.5.1 'Джимара'. Последние изменения: Ср 15 Май 2013 12:56:18. Создано системой  doxygen1.8.3.1 Intervale SourceForge.net Logo