Virtuozzo Virtualization SDK C API Reference
|
The following example illustrates how to call the PrlSrv_LookupParallelsServers synchronously.
hJob = PrlSrv_LookupParallelsServers( 10000, // timeout NULL, // callback function (not used) NULL // user object pointer (not used) ); printf("Searching for Virtuozzo Services...\n"); nRetCode = PrlJob_Wait(hJob, 100000); if (PRL_FAILED(nRetCode)) { fprintf(stderr, "PrlJob_Wait returned with error: %s.\n", PRL_RESULT_TO_STRING( nRetCode)); PrlApi_Deinit(); SdkWrap_Unload(); return nRetCode; } PrlJob_GetResult(hJob, &hJobResult); PrlHandle_Free(hJob); PRL_UINT32 nIndex, nCount; PrlResult_GetParamsCount(hJobResult, &nCount); for (nIndex = 0; nIndex < nCount ; nIndex++) { PRL_HANDLE hParam; PrlResult_GetParamByIndex(hJobResult, nIndex, &hParam); PRL_CHAR sBuf[1024]; PRL_UINT32 nBufSize = sizeof(sBuf); nRetCode = PrlSrvInfo_GetHostName(hParam, sBuf, &nBufSize); if (PRL_SUCCEEDED(nRetCode)) printf("Found Service: %s.\n", &sBuf[0]); else fprintf(stderr, "PrlSrvInfo_GetHostName failed, error: %s. \n", PRL_RESULT_TO_STRING(nRetCode)); PrlHandle_Free(hParam); } PrlHandle_Free(hJobResult);
In the following example, the PrlSrv_LookupParallelsServers is called asynchronously. In order to that, we first have to implement a callback function (let's call it ourCallback):
static PRL_RESULT ourCallback(PRL_HANDLE hEvent, PRL_VOID_PTR pUserData) { printf("%s: ", pUserData); // Get the name of the host machine. PRL_UINT32 nBufSize = 1024; PRL_CHAR sBuf[nBufSize]; PrlSrvInfo_GetHostName(hEvent, sBuf, &nBufSize); // Get the other properties and process them here... // The handle must be freed. PrlHandle_Free(hEvent); return rc; }
The PrlSrv_LookupParallelsServers function can now be called as follows:
hJob = PrlSrv_LookupParallelsServers( 1000, &ourCallback, (PRL_VOID_PTR)("callback") );