diff options
| author | Anton <anton@picapica> | 2019-03-15 19:37:08 +0400 |
|---|---|---|
| committer | Anton <anton@picapica> | 2019-03-15 19:37:08 +0400 |
| commit | 8efba55c86e0437ae65e0b0f5ab7271956265a8d (patch) | |
| tree | be126bdfbab869ed2ff71bb05f41c66b883de9f3 /PICA_nodeaddrlist.c | |
| parent | ad5b7d28c53bfbc88f8dbe898114ff459448c5f4 (diff) | |
| download | pica-pica-8efba55c86e0437ae65e0b0f5ab7271956265a8d.tar.gz pica-pica-8efba55c86e0437ae65e0b0f5ab7271956265a8d.zip | |
pica-node: implement cleaning inactive nodes
Diffstat (limited to 'PICA_nodeaddrlist.c')
| -rw-r--r-- | PICA_nodeaddrlist.c | 52 |
1 files changed, 52 insertions, 0 deletions
diff --git a/PICA_nodeaddrlist.c b/PICA_nodeaddrlist.c index 723de71..417f4c8 100644 --- a/PICA_nodeaddrlist.c +++ b/PICA_nodeaddrlist.c @@ -156,6 +156,58 @@ int PICA_nodeaddr_update(const char* dbfilename, struct PICA_nodeaddr *naddr, in return 1; } +int PICA_nodeaddr_cleanold(const char* dbfilename, int treshold) +{ + sqlite3 *db; + sqlite3_stmt *stmt; + int ret; + const char query[] = "delete from nodes where inactive_count > :treshold"; + + ret = sqlite3_open(dbfilename, &db); + + if (ret != SQLITE_OK) + { + PICA_error("Can't open nodelist database: %s\n", sqlite3_errmsg(db)); + sqlite3_close(db); + return -1; + } + + ret = sqlite3_prepare_v2(db, query, -1, &stmt, NULL); + + if (ret != SQLITE_OK) + { + PICA_error("Can't prepare SQLite statement: %s\n", sqlite3_errmsg(db)); + sqlite3_close(db); + return -1; + } + + ret = sqlite3_bind_int(stmt, 1, treshold); + + if (ret != SQLITE_OK) + { + PICA_error("Can't bind treshold value: %s\n", sqlite3_errmsg(db)); + sqlite3_finalize(stmt); + sqlite3_close(db); + return -1; + } + + ret = sqlite3_step(stmt); + + if (ret != SQLITE_DONE) + { + PICA_error( "Can't execute query: %s\n", sqlite3_errmsg(db)); + sqlite3_finalize(stmt); + sqlite3_close(db); + return -1; + } + + sqlite3_finalize(stmt); + sqlite3_close(db); + + return 1; + +} + int PICA_nodeaddr_save(const char* dbfilename, struct PICA_nodeaddr *naddr) { sqlite3 *db; |
