void a_main_t::so_on_subscription() { SOL4_SUBSCR_EVENT_START( evt_start, 0 ) SOL4_SUBSCR_EVENT_MSG( so_4::rt::sobjectizer_agent_name(), "msg_start" ) SOL4_SUBSCR_EVENT_FINISH_CERR() SOL4_SUBSCR_EVENT_START( evt_bind_ok, 0 ) SOL4_SUBSCR_EVENT_MSG( tcp_agent_name(), "msg_bind_ok" ) SOL4_SUBSCR_EVENT_FINISH_CERR() SOL4_SUBSCR_EVENT_START( evt_bind_fail, 0 ) SOL4_SUBSCR_EVENT_MSG( tcp_agent_name(), "msg_bind_fail" ) SOL4_SUBSCR_EVENT_FINISH_CERR() SOL4_SUBSCR_EVENT_START( evt_server_closed, 0 ) SOL4_SUBSCR_EVENT_MSG( tcp_agent_name(), "msg_server_closed" ) SOL4_SUBSCR_EVENT_FINISH_CERR() SOL4_SUBSCR_EVENT_START( evt_client_accepted, 0 ) SOL4_SUBSCR_EVENT_MSG( tcp_agent_name(), "msg_client_accepted" ) SOL4_SUBSCR_EVENT_FINISH_CERR() SOL4_SUBSCR_EVENT_START( evt_client_disconnected, 0 ) SOL4_SUBSCR_EVENT_MSG( tcp_agent_name(), "msg_client_disconnected" ) SOL4_SUBSCR_EVENT_FINISH_CERR() SOL4_SUBSCR_EVENT_START( evt_incomming_data, 0 ) SOL4_SUBSCR_EVENT_MSG( tcp_agent_name(), "msg_incomming_data" ) SOL4_SUBSCR_EVENT_FINISH_CERR() SOL4_SUBSCR_EVENT_START( evt_create_srvsock, 0 ) SOL4_SUBSCR_EVENT_MSG_SELF( "msg_create_srvsock" ) SOL4_SUBSCR_EVENT_FINISH_CERR() SOL4_SUBSCR_EVENT_START( evt_send_notify, 0 ) SOL4_SUBSCR_EVENT_MSG_SELF( "msg_send_notify" ) SOL4_SUBSCR_EVENT_FINISH_CERR() }
В v.4.2.6 в класс so_4::rt::agent_t добавлены методы so_subscribe(), которые могут упростить подписку событий агентов. Приведенный выше пример с их помощью можно переписать следующим образом:
void a_main_t::so_on_subscription() { so_subscribe( "evt_start", so_4::rt::sobjectizer_agent_name(), "msg_start" ); so_subscribe( "evt_bind_ok", tcp_agent_name(), "msg_bind_ok" ); so_subscribe( "evt_bind_fail", tcp_agent_name(), "msg_bind_fail" ); so_subscribe( "evt_server_closed", tcp_agent_name(), "msg_server_closed" ); so_subscribe( "evt_client_accepted", tcp_agent_name(), "msg_client_accepted" ); so_subscribe( "evt_client_disconnected", tcp_agent_name(), "msg_client_disconnected" ); so_subscribe( "evt_incomming_data", tcp_agent_name(), "msg_incomming_data" ); so_subscribe( "evt_create_srvsock", "msg_create_srvsock" ); so_subscribe( "evt_send_notify", "msg_send_notify" ); }
По умолчанию, действие методов so_4::rt::agent_t::so_subscribe() аналогично макросам:
SOL4_SUBSCR_EVENT_START( event, priority ) SOL4_SUBSCR_EVENT_MSG( owner, msg ) SOL4_SUBSCR_EVENT_FINISH_CERR()
Документация по SObjectizer v.4.4 'Тебуломста'. Последние изменения: Thu Sep 18 10:26:48 2008. Создано системой 1.5.6 |