From: Sansar Choinyambuu Date: Wed, 19 Oct 2011 07:18:58 +0000 (+0200) Subject: Implemented new create enumerator function to get metadata request paths X-Git-Tag: 4.6.2~318 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=8ed9f5552ee8516cb962cd5b01a09249266a6381;p=thirdparty%2Fstrongswan.git Implemented new create enumerator function to get metadata request paths Modified existing file_enumerator function to include just measurement requests --- diff --git a/src/libpts/pts/pts_database.c b/src/libpts/pts/pts_database.c index 2706173ab2..c9ca98d071 100644 --- a/src/libpts/pts/pts_database.c +++ b/src/libpts/pts/pts_database.c @@ -49,11 +49,26 @@ METHOD(pts_database_t, create_file_enumerator, enumerator_t*, "SELECT f.id, f.type, f.path FROM files AS f " "JOIN product_file AS pf ON f.id = pf.file " "JOIN products AS p ON p.id = pf.product " - "WHERE p.name = ?", + "WHERE p.name = ? AND f.measurement = 1", DB_TEXT, product, DB_INT, DB_INT, DB_TEXT); return e; } +METHOD(pts_database_t, create_file_meta_enumerator, enumerator_t*, + private_pts_database_t *this, char *product) +{ + enumerator_t *e; + + /* look for all entries belonging to a product in the files table */ + e = this->db->query(this->db, + "SELECT f.type, f.path FROM files AS f " + "JOIN product_file AS pf ON f.id = pf.file " + "JOIN products AS p ON p.id = pf.product " + "WHERE p.name = ? AND f.metadata = 1", + DB_TEXT, product, DB_INT, DB_TEXT); + return e; +} + METHOD(pts_database_t, create_hash_enumerator, enumerator_t*, private_pts_database_t *this, char *product, pts_meas_algorithms_t algo, int id, bool is_dir) @@ -99,6 +114,7 @@ pts_database_t *pts_database_create(char *uri) INIT(this, .public = { .create_file_enumerator = _create_file_enumerator, + .create_file_meta_enumerator = _create_file_meta_enumerator, .create_hash_enumerator = _create_hash_enumerator, .destroy = _destroy, }, diff --git a/src/libpts/pts/pts_database.h b/src/libpts/pts/pts_database.h index f2a6854a56..af2c87aa18 100644 --- a/src/libpts/pts/pts_database.h +++ b/src/libpts/pts/pts_database.h @@ -33,13 +33,21 @@ typedef struct pts_database_t pts_database_t; struct pts_database_t { /** - * Get files to be measured by PTS + * Get files/directories to be measured by PTS * * @param product software product (os, vpn client, etc.) - * @return enumerator over all matching files + * @return enumerator over all matching files/directories */ enumerator_t* (*create_file_enumerator)(pts_database_t *this, char *product); + /** + * Get files/directories to request metadata of + * + * @param product software product (os, vpn client, etc.) + * @return enumerator over all matching files/directories + */ + enumerator_t* (*create_file_meta_enumerator)(pts_database_t *this, char *product); + /** * Get stored measurement hash for single file or directory entries *