示例#1
0
/** SCM state change handler */
static void WINAPI win_service_handler(DWORD control)
{
	apt_log(APT_LOG_MARK,APT_PRIO_INFO,"Service Handler %d",control);
	switch (control)
	{
		case SERVICE_CONTROL_INTERROGATE:
			break;
		case SERVICE_CONTROL_SHUTDOWN:
		case SERVICE_CONTROL_STOP:
			if(server) {
				win_service_status.dwCurrentState = SERVICE_STOP_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());
				}

				/* shutdown server */
				unimrcp_server_shutdown(server);
			}
			win_service_status.dwCurrentState = SERVICE_STOPPED; 
			win_service_status.dwCheckPoint = 0; 
			win_service_status.dwWaitHint = 0; 
			break;
	}

	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;
}