void A::evt( const event_data_t & ); void A::evt_handler( const so_4::rt::event_data_t &, const msg_type * cmd ); void A::evt_handler( const so_4::rt::event_data_t &, msg_type * cmd );
В v.4.2.6 обработчики событий могут иметь один из следующих дополнительных форматов:
void A::evt(); void A::evt_handler( const so_4::rt::event_data_t &, const msg_type & cmd ); void A::evt_handler( const msg_type * cmd ); void A::evt_handler( const msg_type & cmd );
Для описания обработчиков событий, которые имеют формат
void A::evt();
Появление дополнительных форматов обработчиков событий упрощает написание агентов. Например, обработчик начала работы агента может выглядеть так:
class a_my_t : public so_4::rt::agent_t { ... void evt_start(); ... }; SOL4_CLASS_START( a_my_t ) ... SOL4_EVENT( evt_start ) ... SOL4_CLASS_FINISH()
class a_my_t : public so_4::rt::agent_t { ... struct msg_my_data { ... }; void evt_my_data( const msg_my_data & cmd ); ... }; SOL4_CLASS_START( a_my_t ) ... SOL4_MSG_START( msg_my_data, a_my_t::msg_my_data ) SOL4_MSG_FINISH() SOL4_EVENT_STC( evt_my_data, a_my_t::msg_my_data ) ... SOL4_CLASS_FINISH()
Макрос SOL4_EVENT_WITH_INCIDENT_TYPE() оставлен в v.4.2.6 в неизменном виде, чтобы полностью сохранить работоспособность написанного ранее кода. Поскольку оказалось, что в некоторых случаях использовались как раз обработчики событий с неконстантными указателями на инцидент.
Но при использовании SObjectizer-а, начиная с v.4.2.6, рекомендуется использовать макрос SOL4_EVENT_STC(), т.к.:
Документация по SObjectizer v.4.4 'Тебуломста'. Последние изменения: Thu Sep 18 10:26:48 2008. Создано системой 1.5.6 |