FUNCTION int initLicRefCache(cacheroot_t *pcroot) { PGresult *result; char query[myBUFSIZ]; int row; int numLics; if (!pcroot) return 0; sprintf(query, "SELECT rf_pk, rf_shortname FROM " LICENSE_REF_TABLE " where rf_detector_type=2"); result = PQexec(gl.pgConn, query); if (fo_checkPQresult(gl.pgConn, result, query, __FILE__, __LINE__)) return 0; numLics = PQntuples(result); /* populate the cache */ for (row = 0; row < numLics; row++) { lrcache_add(pcroot, atol(PQgetvalue(result, row, 0)), PQgetvalue(result, row, 1)); } PQclear(result); return (1); } /* initLicRefCache */
/** \brief Get the rf_pk for rf_shortname Checks the cache to get the rf_pk for this shortname. If it doesn't exist, add it to both license_ref and the license_ref cache (the hash table). @param pcroot @param rf_shortname @return rf_pk of the matched license or 0 */ FUNCTION long get_rfpk(cacheroot_t *pcroot, char *rf_shortname) { long rf_pk; size_t len; if ((len = strlen(rf_shortname)) == 0) { printf("ERROR! Nomos.c get_rfpk() passed empty name"); return (0); } /* is this in the cache? */ rf_pk = lrcache_lookup(pcroot, rf_shortname); if (rf_pk) return rf_pk; /* shortname was not found, so add it */ /* add to the license_ref table */ rf_pk = add2license_ref(rf_shortname); /* add to the cache */ lrcache_add(pcroot, rf_pk, rf_shortname); return (rf_pk); } /* get_rfpk */
FUNCTION int lrcache_init(PGconn *pgConn, cacheroot_t *pcroot) { PGresult *result; char query[128]; int row; int numLics; if (!pcroot) return 0; snprintf(query, sizeof(query), "SELECT rf_pk, rf_shortname FROM license_ref where rf_detector_type=2;"); result = PQexec(pgConn, query); if (fo_checkPQresult(pgConn, result, query, "lrcache_init", __LINE__)) return 0; numLics = PQntuples(result); /* populate the cache */ for (row = 0; row < numLics; row++) { lrcache_add(pcroot, atol(PQgetvalue(result, row, 0)), PQgetvalue(result, row, 1)); } PQclear(result); return (1); } /* lrcache_init */