summaryrefslogtreecommitdiffstats
path: root/PICA_nodeaddrlist.c
diff options
context:
space:
mode:
authorAnton <anton@picapica>2019-03-15 19:37:08 +0400
committerAnton <anton@picapica>2019-03-15 19:37:08 +0400
commit8efba55c86e0437ae65e0b0f5ab7271956265a8d (patch)
treebe126bdfbab869ed2ff71bb05f41c66b883de9f3 /PICA_nodeaddrlist.c
parentad5b7d28c53bfbc88f8dbe898114ff459448c5f4 (diff)
downloadpica-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.c52
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;