/* * Initialization for cache use */ static void initializeCache(RsslBool cacheOption) { RsslRet ret; if (cacheOption) { if ((ret = rsslPayloadCacheInitialize()) != RSSL_RET_SUCCESS) { printf("rsslPayloadCacheInitialize() failed: %d (%s). Cache will be disabled.", ret, rsslRetCodeToString(ret)); cacheInfo.useCache = RSSL_FALSE; return; } cacheInfo.useCache = RSSL_TRUE; cacheInfo.cacheOptions.maxItems = 1000; rsslCacheErrorClear(&cacheInfo.cacheErrorInfo); snprintf(cacheInfo.cacheDictionaryKey, sizeof(cacheInfo.cacheDictionaryKey), "cacheDictionary%d", 1); cacheInfo.cacheHandle = rsslPayloadCacheCreate(&cacheInfo.cacheOptions, &cacheInfo.cacheErrorInfo); if (cacheInfo.cacheHandle == 0) { printf("Error: Failed to create cache.\n\tError (%d): %s\n", cacheInfo.cacheErrorInfo.rsslErrorId, cacheInfo.cacheErrorInfo.text); cacheInfo.useCache = RSSL_FALSE; } } else { cacheInfo.useCache = RSSL_FALSE; cacheInfo.cacheHandle = 0; } }
/* * Retrieval from cache */ RsslRet retrieveFromCache(RsslEncodeIterator *eIter, RsslPayloadEntryHandle cacheEntryHandle, RsslVACacheInfo *pCacheInfo) { RsslRet ret; if (cacheEntryHandle) { // retrieve payload from cache rsslCacheErrorClear(&pCacheInfo->cacheErrorInfo); ret = rsslPayloadEntryRetrieve(cacheEntryHandle, eIter, pCacheInfo->cursorHandle, &pCacheInfo->cacheErrorInfo); return ret; } else { printf("Error: no cache entry handle\n"); return RSSL_RET_FAILURE; } }