Пример #1
0
static void WINAPI win_service_main(DWORD argc, LPTSTR *argv)
{
	apt_log(APT_LOG_MARK,APT_PRIO_INFO,"Service Main");
	win_service_status.dwServiceType = SERVICE_WIN32;
	win_service_status.dwControlsAccepted = SERVICE_ACCEPT_STOP;
	win_service_status.dwWin32ExitCode = 0;
	win_service_status.dwServiceSpecificExitCode = 0;
	win_service_status.dwCheckPoint = 0;
	win_service_status.dwWaitHint = 0;

	win_service_status_handle = RegisterServiceCtrlHandler(WIN_SERVICE_NAME, win_service_handler);
	if(win_service_status_handle == (SERVICE_STATUS_HANDLE)0) {
		apt_log(APT_LOG_MARK,APT_PRIO_WARNING,"Failed to Register Service Control Handler %d",GetLastError());
		return;
	} 

	win_service_status.dwCurrentState = SERVICE_START_PENDING;
	if(!SetServiceStatus(win_service_status_handle, &win_service_status)) {
		apt_log(APT_LOG_MARK,APT_PRIO_WARNING,"Failed to Set Service Status %d",GetLastError());
	} 

	/* start server */
	server = unimrcp_server_start(service_dir_layout);

	win_service_status.dwCurrentState =  server ? SERVICE_RUNNING : SERVICE_STOPPED;
	if(!SetServiceStatus(win_service_status_handle, &win_service_status)) {
		apt_log(APT_LOG_MARK,APT_PRIO_WARNING,"Failed to Set Service Status %d",GetLastError());
	} 
}
Пример #2
0
apt_bool_t uni_cmdline_run(apt_dir_layout_t *dir_layout, apr_pool_t *pool)
{
	apt_bool_t running = TRUE;
	char cmdline[1024];
	int i;
	mrcp_server_t *server;

	/* start server */
	server = unimrcp_server_start(dir_layout);
	if(!server) {
		return FALSE;
	}

	do {
		printf(">");
		memset(&cmdline, 0, sizeof(cmdline));
		for(i = 0; i < sizeof(cmdline); i++) {
			cmdline[i] = (char) getchar();
			if(cmdline[i] == '\n') {
				cmdline[i] = '\0';
				break;
			}
		}
		if(*cmdline) {
			running = cmdline_process(cmdline);
		}
	}
	while(running != 0);

	/* shutdown server */
	unimrcp_server_shutdown(server);
	return TRUE;
}