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