diff options
author | Omar Tarabai <tarabai@devegypt.com> | 2014-05-14 17:06:27 +0000 |
---|---|---|
committer | Omar Tarabai <tarabai@devegypt.com> | 2014-05-14 17:06:27 +0000 |
commit | 3fd47482d18b111b1dd407258d1eb388df56c21e (patch) | |
tree | c58fa83178682ee8abcf01884150a1e04cb262a8 /src/peerstore | |
parent | 1eef3106cb6ed367eeaec6c35b2dcc76ef314db6 (diff) | |
download | gnunet-3fd47482d18b111b1dd407258d1eb388df56c21e.tar.gz gnunet-3fd47482d18b111b1dd407258d1eb388df56c21e.zip |
added record expiry to sqlite
Diffstat (limited to 'src/peerstore')
-rw-r--r-- | src/peerstore/gnunet-service-peerstore.c | 21 | ||||
-rw-r--r-- | src/peerstore/plugin_peerstore_sqlite.c | 19 |
2 files changed, 17 insertions, 23 deletions
diff --git a/src/peerstore/gnunet-service-peerstore.c b/src/peerstore/gnunet-service-peerstore.c index 990fa2c88..ad4d68335 100644 --- a/src/peerstore/gnunet-service-peerstore.c +++ b/src/peerstore/gnunet-service-peerstore.c | |||
@@ -115,21 +115,11 @@ void handle_store (void *cls, | |||
115 | GNUNET_SERVER_receive_done(client, GNUNET_SYSERR); | 115 | GNUNET_SERVER_receive_done(client, GNUNET_SYSERR); |
116 | return; | 116 | return; |
117 | } | 117 | } |
118 | if(NULL == record->sub_system) | 118 | if(NULL == record->sub_system |
119 | || NULL == record->peer | ||
120 | || NULL == record->key) | ||
119 | { | 121 | { |
120 | GNUNET_log(GNUNET_ERROR_TYPE_ERROR, "Sub system not supplied in client store request\n"); | 122 | GNUNET_log(GNUNET_ERROR_TYPE_ERROR, "Full key not supplied in client store request\n"); |
121 | GNUNET_SERVER_receive_done(client, GNUNET_SYSERR); | ||
122 | return; | ||
123 | } | ||
124 | if(NULL == record->peer) | ||
125 | { | ||
126 | GNUNET_log(GNUNET_ERROR_TYPE_ERROR, "Peer id not supplied in client store request\n"); | ||
127 | GNUNET_SERVER_receive_done(client, GNUNET_SYSERR); | ||
128 | return; | ||
129 | } | ||
130 | if(NULL == record->key) | ||
131 | { | ||
132 | GNUNET_log(GNUNET_ERROR_TYPE_ERROR, "Key not supplied in client store request\n"); | ||
133 | GNUNET_SERVER_receive_done(client, GNUNET_SYSERR); | 123 | GNUNET_SERVER_receive_done(client, GNUNET_SYSERR); |
134 | return; | 124 | return; |
135 | } | 125 | } |
@@ -143,7 +133,8 @@ void handle_store (void *cls, | |||
143 | record->peer, | 133 | record->peer, |
144 | record->key, | 134 | record->key, |
145 | record->value, | 135 | record->value, |
146 | record->value_size)) | 136 | record->value_size, |
137 | GNUNET_TIME_relative_to_absolute(record->lifetime))) | ||
147 | { | 138 | { |
148 | response_type = GNUNET_MESSAGE_TYPE_PEERSTORE_STORE_RESULT_OK; | 139 | response_type = GNUNET_MESSAGE_TYPE_PEERSTORE_STORE_RESULT_OK; |
149 | } | 140 | } |
diff --git a/src/peerstore/plugin_peerstore_sqlite.c b/src/peerstore/plugin_peerstore_sqlite.c index 10ab17650..c44914f43 100644 --- a/src/peerstore/plugin_peerstore_sqlite.c +++ b/src/peerstore/plugin_peerstore_sqlite.c | |||
@@ -208,7 +208,8 @@ peerstore_sqlite_store_record(void *cls, | |||
208 | const struct GNUNET_PeerIdentity *peer, | 208 | const struct GNUNET_PeerIdentity *peer, |
209 | const char *key, | 209 | const char *key, |
210 | const void *value, | 210 | const void *value, |
211 | size_t size) | 211 | size_t size, |
212 | struct GNUNET_TIME_Absolute expiry) | ||
212 | { | 213 | { |
213 | struct Plugin *plugin = cls; | 214 | struct Plugin *plugin = cls; |
214 | sqlite3_stmt *stmt = plugin->insert_peerstoredata; | 215 | sqlite3_stmt *stmt = plugin->insert_peerstoredata; |
@@ -218,7 +219,8 @@ peerstore_sqlite_store_record(void *cls, | |||
218 | if(SQLITE_OK != sqlite3_bind_text(stmt, 1, sub_system, strlen(sub_system) + 1, SQLITE_STATIC) | 219 | if(SQLITE_OK != sqlite3_bind_text(stmt, 1, sub_system, strlen(sub_system) + 1, SQLITE_STATIC) |
219 | || SQLITE_OK != sqlite3_bind_blob(stmt, 2, peer, sizeof(struct GNUNET_PeerIdentity), SQLITE_STATIC) | 220 | || SQLITE_OK != sqlite3_bind_blob(stmt, 2, peer, sizeof(struct GNUNET_PeerIdentity), SQLITE_STATIC) |
220 | || SQLITE_OK != sqlite3_bind_text(stmt, 3, key, strlen(key) + 1, SQLITE_STATIC) | 221 | || SQLITE_OK != sqlite3_bind_text(stmt, 3, key, strlen(key) + 1, SQLITE_STATIC) |
221 | || SQLITE_OK != sqlite3_bind_blob(stmt, 4, value, size, SQLITE_STATIC)) | 222 | || SQLITE_OK != sqlite3_bind_blob(stmt, 4, value, size, SQLITE_STATIC) |
223 | || SQLITE_OK != sqlite3_bind_int64(stmt, 5, (sqlite3_int64)expiry.abs_value_us)) | ||
222 | LOG_SQLITE (plugin, GNUNET_ERROR_TYPE_ERROR | GNUNET_ERROR_TYPE_BULK, | 224 | LOG_SQLITE (plugin, GNUNET_ERROR_TYPE_ERROR | GNUNET_ERROR_TYPE_BULK, |
223 | "sqlite3_bind"); | 225 | "sqlite3_bind"); |
224 | else if (SQLITE_DONE != sqlite3_step (stmt)) | 226 | else if (SQLITE_DONE != sqlite3_step (stmt)) |
@@ -343,30 +345,31 @@ database_setup (struct Plugin *plugin) | |||
343 | " sub_system TEXT NOT NULL,\n" | 345 | " sub_system TEXT NOT NULL,\n" |
344 | " peer_id BLOB NOT NULL,\n" | 346 | " peer_id BLOB NOT NULL,\n" |
345 | " key TEXT NOT NULL,\n" | 347 | " key TEXT NOT NULL,\n" |
346 | " value BLOB NULL" | 348 | " value BLOB NULL,\n" |
349 | " expiry INTEGER NOT NULL" | ||
347 | ");"); | 350 | ");"); |
348 | 351 | ||
349 | /* Prepare statements */ | 352 | /* Prepare statements */ |
350 | 353 | ||
351 | sql_prepare (plugin->dbh, | 354 | sql_prepare (plugin->dbh, |
352 | "INSERT INTO peerstoredata (sub_system, peer_id, key, value) VALUES (?,?,?,?);", | 355 | "INSERT INTO peerstoredata (sub_system, peer_id, key, value, expiry) VALUES (?,?,?,?,?);", |
353 | &plugin->insert_peerstoredata); | 356 | &plugin->insert_peerstoredata); |
354 | sql_prepare(plugin->dbh, | 357 | sql_prepare(plugin->dbh, |
355 | "SELECT peer_id, sub_system, value FROM peerstoredata" | 358 | "SELECT * FROM peerstoredata" |
356 | " WHERE sub_system = ?", | 359 | " WHERE sub_system = ?", |
357 | &plugin->select_peerstoredata); | 360 | &plugin->select_peerstoredata); |
358 | sql_prepare(plugin->dbh, | 361 | sql_prepare(plugin->dbh, |
359 | "SELECT peer_id, sub_system, value FROM peerstoredata" | 362 | "SELECT * FROM peerstoredata" |
360 | " WHERE sub_system = ?" | 363 | " WHERE sub_system = ?" |
361 | " AND peer_id = ?", | 364 | " AND peer_id = ?", |
362 | &plugin->select_peerstoredata_by_pid); | 365 | &plugin->select_peerstoredata_by_pid); |
363 | sql_prepare(plugin->dbh, | 366 | sql_prepare(plugin->dbh, |
364 | "SELECT peer_id, sub_system, value FROM peerstoredata" | 367 | "SELECT * FROM peerstoredata" |
365 | " WHERE sub_system = ?" | 368 | " WHERE sub_system = ?" |
366 | " AND key = ?", | 369 | " AND key = ?", |
367 | &plugin->select_peerstoredata_by_key); | 370 | &plugin->select_peerstoredata_by_key); |
368 | sql_prepare(plugin->dbh, | 371 | sql_prepare(plugin->dbh, |
369 | "SELECT peer_id, sub_system, value FROM peerstoredata" | 372 | "SELECT * FROM peerstoredata" |
370 | " WHERE sub_system = ?" | 373 | " WHERE sub_system = ?" |
371 | " AND peer_id = ?" | 374 | " AND peer_id = ?" |
372 | " AND key = ?", | 375 | " AND key = ?", |