SObjectizer  5.1
Открытые члены | Закрытые типы | Закрытые члены | Закрытые данные | Полный список членов класса
Класс so_sysconf_4::ntservice::ntservice_t

Класс для выполнения роли сервиса. Подробнее...

Граф наследования:so_sysconf_4::ntservice::ntservice_t:

Открытые члены

virtual void handle_control (DWORD control_code)
 Инициирует завершение работы сервиса.
 
virtual int svc ()
 Выполняет запуск и останов SObjectizer-а.
 
void put_sobjectizer_environment_ptr (so_5::rt::so_environment_t *so_environment)
 SObjectizer завершил свою работу.
 
Методы для помещения управляющих

сообщений в очередь сообщений задачи-сервиса.

void put_sobjectizer_started_msg ()
 SObjectizer успешно стартовал.
 
void put_sobjectizer_finished_msg (int run_sobjectizer_result)
 SObjectizer завершил свою работу. Подробнее...
 
void put_stop_msg ()
 Всему сервису нужно завершить работу.
 

Закрытые типы

enum  { MB_SOBJECTIZER_STARTED, MB_SOBJECTIZER_FINISHED, MB_STOP }
 
typedef ACE_NT_Service base_type_t
 Псевдоним для базового типа.
 

Закрытые члены

int wait_sobjectizer_start_or_finish ()
 
int wait_sobjectizer_or_service_shutdown ()
 
int initiate_and_wait_sobjectizer_shutdown ()
 
void set_service_stopped_status_if_sobjectizer_finished_normally ()
 
void turn_sobjectizer_to_shutdown ()
 

Закрытые данные

int m_run_sobjectizer_result
 Код возврата функции run_sobjectizer. Подробнее...
 
so_5::rt::so_environment_tm_so_environment
 Указатель на среду so_5.
 
ACE_Thread_Mutex m_mutex
 Мьютекс для синфхронизации обращения к указателю на среду so. Подробнее...
 

Подробное описание

Класс для выполнения роли сервиса.

Перечисления

anonymous enum
private
Элементы перечислений
MB_SOBJECTIZER_STARTED 

Тип сообщения о том, что SObjectizer успешно стартовал.

MB_SOBJECTIZER_FINISHED 

Тип сообщения о том, что SObjectizer завершил работу.

MB_STOP 

Тип сообщения о том, что всему сервису нужно завершать свою работу.

Методы

int so_sysconf_4::ntservice::ntservice_t::initiate_and_wait_sobjectizer_shutdown ( )
private

Инициирует завершение работы SObjectizer, а затем ожидает сообщения MB_SOBJECTIZER_FINISHED. В процессе ожидания периодически сообщает, что сервис находится в состоянии SERVICE_STOP_PENDING.

Перекрестные ссылки MB_SOBJECTIZER_FINISHED, set_service_stopped_status_if_sobjectizer_finished_normally() и turn_sobjectizer_to_shutdown().

Используется в wait_sobjectizer_or_service_shutdown().

void so_sysconf_4::ntservice::ntservice_t::put_sobjectizer_finished_msg ( int  run_sobjectizer_result)

SObjectizer завершил свою работу.

Аргументы
run_sobjectizer_resultКод возврата функции run_sobjectizer с помощью которого можно определить, успешно ли завершилась работа SObjectizer или нет. Нулевое значение указывает, что SObjectizer стартовал и завершился успешно.

Перекрестные ссылки m_run_sobjectizer_result и MB_SOBJECTIZER_FINISHED.

void so_sysconf_4::ntservice::ntservice_t::set_service_stopped_status_if_sobjectizer_finished_normally ( )
private

Установка или не установка статуса SERVICE_STOPPED в зависимости от того, как SObjectizer завершил свою работу (без ошибок или с ошибками). Если завершение работы SObjectizer произошло из-за фатальной ошибки, то вызывается функция abort(). Это дает возможность Windows диагностировать "падение" сервиса.

Перекрестные ссылки m_run_sobjectizer_result и SO_5_LOG_FMT.

Используется в initiate_and_wait_sobjectizer_shutdown() и wait_sobjectizer_or_service_shutdown().

void so_sysconf_4::ntservice::ntservice_t::turn_sobjectizer_to_shutdown ( )
private

Завершить работу подчиненного SO.

Перекрестные ссылки m_mutex, m_so_environment и so_5::rt::so_environment_t::query_layer().

Используется в initiate_and_wait_sobjectizer_shutdown().

int so_sysconf_4::ntservice::ntservice_t::wait_sobjectizer_or_service_shutdown ( )
private

Ожидает либо сигнала о необходимости завершить работу сервиса, либо уведомления о том, что SObjectizer сам завершил свою работу.

Если поступает сообщение STOP, то инициирует завершение SObjectizer-а и переходит в режим ожидания уведомления о завершении работы SObjectizer.

Перекрестные ссылки initiate_and_wait_sobjectizer_shutdown(), MB_SOBJECTIZER_FINISHED, MB_STOP и set_service_stopped_status_if_sobjectizer_finished_normally().

Используется в wait_sobjectizer_start_or_finish().

int so_sysconf_4::ntservice::ntservice_t::wait_sobjectizer_start_or_finish ( )
private

Ожидает сообщения о старте SObjectizer-а или о том, что SObjectizer завершился не стартовав.

Если поступает сообщение о старте SObjectizer-а, то инициирует ожидание команды STOP или же завершения SObjectizer-а по какой-либо внутренней причине.

Перекрестные ссылки MB_SOBJECTIZER_FINISHED, MB_SOBJECTIZER_STARTED и wait_sobjectizer_or_service_shutdown().

Используется в svc().

Данные класса

ACE_Thread_Mutex so_sysconf_4::ntservice::ntservice_t::m_mutex
private

Мьютекс для синфхронизации обращения к указателю на среду so.

Необходим в случае, когда ntservice вызовет завершение работы so, а одновременно с этим среда so в деструкторе попытается обнулить указатель на среду.

Используется в turn_sobjectizer_to_shutdown().

int so_sysconf_4::ntservice::ntservice_t::m_run_sobjectizer_result
private

Код возврата функции run_sobjectizer.

Это значение устанавливается в методе put_sobjectizer_started_msg(). Можно было бы его передавать внутри ACE_Message_Block при передаче сообщения MB_SOBJECTIZER_FINISHED, но передача данных в ACE_Message_Block слишком трудоемка, поэтому используется более простое решение.

Используется в put_sobjectizer_finished_msg(), set_service_stopped_status_if_sobjectizer_finished_normally() и svc().


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